小编Mal*_*ian的帖子

如何隐藏班级的私人成员?

我一直在使用visual studio,每次使用Classes时都会让我很烦.问题是,当我创建一个类的对象时,我倾向于看到私有成员属于该类而我不想,因为如果我创建一个包含10+私有变量的类,那么它将是一场噩梦,必须有隐藏私人会员的方法,如果有办法请与我分享?谢谢 :)

编辑:

这张图片可以帮助您理解我在说什么,

例如,我有2个LinkedList类的私有变量(curSize和head)我将无法从main更改它们,所以没有必要看到它们(是吗?)如何在不改变代码的情况下隐藏它们?在Visual Studio中有设置吗?

c++ intellisense private-members visual-studio

9
推荐指数
2
解决办法
4009
查看次数

FFMPEG无法显示视频的持续时间

我正在尝试使用ffmpeg从视频文件中捕获帧,但我甚至无法获得视频的持续时间.每次当我尝试访问它时,pFormatCtx->duration 我都会得到0.我知道指针已初始化并包含正确的持续时间,因为如果我使用 av_dump_format(pFormatCtx, 0, videoName, 0);那么我实际上得到持续时间数据以及有关视频的其他信息.这是我使用时得到的av_dump_format(pFormatCtx, 0, videoName, 0);:

输入#0,avi,来自'futurama.avi':

持续时间:00:21:36.28,开始:0.000000,比特率:1135 kb/s

流#0.0:视频:mpeg4(高级简单配置文件),yuv420p,512x384

[PAR 1:1 DAR 4:3],25 tbr,25 tbn,25 tbc

流#0.1:音频:ac3,48000Hz,立体声,s16,192kb/s

我不明白为什么av_dum_format可以显示持续时间而我不能.我检查了函数定义,显示持续时间,该函数也使用pFormatCtx-> duration.当我在main.cpp中调用它们时,其他成员变量也不会显示正确的数据

这是我的main.cpp:

extern "C" {
    #include<libavcodec/avcodec.h>
    #include<libavformat/avformat.h>
    #include<libswscale/swscale.h>
}


int main(int argc, char *argv[]) {
    AVFormatContext *pFormatCtx = NULL;

    const char videoName[] = "futurama.avi";

    // Register all formats and codecs.
    av_register_all();
    cout << "Opening the video file";
    // Open video file
    int ret = avformat_open_input(&pFormatCtx, videoName, NULL, NULL) != 0;
    if (ret …
Run Code Online (Sandbox Code Playgroud)

c c++ ffmpeg video-processing libavcodec

6
推荐指数
2
解决办法
5909
查看次数

将QImage划分为较小的部分

我有一个图像,我想将这个图像分成n个部分.所以我想知道的是我怎样才能用QImage做到这一点?或者这个任务有更好的(表现明智的)Qt类吗?

例如,想象我有一个由1920x1080像素组成的图像,我想将它分成100个,这意味着每个部分将包含192x108像素.请注意,我不想创建相同的缩放到192x108的片段.每件作品都是主图片的一部分.

在此输入图像描述

我附上了一张图片,让我的问题更加清晰.这个图像由1920x1080像素组成,每个部分都是由192x108像素组成的网格,我想将它们作为QImage对象处理,而不是实际将它分成100个.

有没有办法用QImage做到这一点?性能在这里很重要,因为我将分析每件作品,通常会有超过1000件.

谢谢您的帮助!

编辑:两种方法都很完美,但是alexisdm的方法更复杂,更低级,但速度更快.jmk的方法更容易使用,但速度较慢.

谢谢你的回答.

c++ qt image image-processing qimage

5
推荐指数
1
解决办法
3870
查看次数

C++ Int to String使用ostringstream或stringstream

我一直在使用stringstream转换IntegerString,但后来我意识到同样的操作是可以做到的ostringstream.

当我使用.str()它们之间有什么区别?此外,是否有更有效的方法将整数转换为字符串?

示例代码:

//using ostringstream

ostringstream s1;
int i=100;
s1<<i;
string str_i=s1.str();
cout<<str_i<<endl;

//using stringstream

stringstream s2;
int i2=100;
s2<<i2;
string str_i2=s2.str();
cout<<str_i2<<endl;
Run Code Online (Sandbox Code Playgroud)

c++ string stringstream ostringstream

4
推荐指数
1
解决办法
1万
查看次数