1.拷贝构造函数中的const
AdsRptPlayListStatus( AdsRptPlayListStatus& other ):AdsReport( other )
{
_type = other._type;//这里有问题!它就是不赋值!太奇怪了
_playListID = other._playListID;
_totalBytes = other._totalBytes;
_transportBytes = other._transportBytes;
_fileCount = other._fileCount;
_transportFileCount = other._transportFileCount;
_currentSpeed = other._currentSpeed;
_currentFilePercent = other._currentFilePercent;
_data = other._data;
_description = other._description;
}
只有加const后才能正常的赋值
AdsRptPlayListStatus( const AdsRptPlayListStatus& other ):AdsReport( other )
2.初始化顺序
一个很简单的灌数据的测试程序
定义一个全局变量:
AdsServerFrame *frame = NULL;
其构造函数:
AdsServerFrame::AdsServerFrame(wxFrame *frame, const wxString& title,int x, int y, int w, int h)
: wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h))
{
//在这里初始化一个线程InputFileThread
InputFileThread *tt = new InputFileThread();
tt->Create();
tt->Run();
}
线程:
InputFileThread 启动动后立马开始执行。
线程 InputFileThread 中会使用全局的变量 frame
void *InputFileThread::Entry()
{
...//初始化
frame->...
....// loop, 灌数据
}
运行时,初始化frame即可。
在两台机器上运行没问题,但是当把程序靠到一台新机器上时(新机器配置较好),立马报 0x00000000 指针错误,就是空指针。看了下程序,很简单的程序,哪来的空指针呢?考虑了一下,应该是那个 frame
在初始化 frame 的过程中,初始化了线程 InputFileThread
这时候存在两个线程,一个主线程,一个 InputFileThread 实例
可能在 frame 尚未初始化完毕,线程 InputFileThread 调用了frame
frame 此时为空,没有作空指针检测,自然会报空指针错误。
解决办法:
a.运行时,先初始化 frame,然后在初始化线程 InputFileThread;也就是说,不要再frame构造函数中初始化线程;
b.线程 InputFileThread 中作一个loop,检测 frame是否为空,若为空,则一直sleep,不为空再继续执行;
分享到:
相关推荐
- **碰撞检测**:确定两个或多个图形对象是否发生接触的过程。 - **碰撞响应**:当检测到碰撞发生时,对这些图形对象进行相应的物理行为调整,例如改变速度、方向等。 - **物理引擎**:一种软件库,用于处理游戏中...
6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行...
本问题主要探讨了如何在C++中实现两个一维数组的相加求和。下面将详细阐述这一过程及其涉及的关键知识点。 首先,我们创建了两个一维整型数组`arr1`和`arr2`,分别初始化为`{1, 2, 3, 4, 5}`和`{6, 7, 8, 9, 10}`。...
写一个C++程序,计算两个多边形的重叠面积 多边形class定义如下: class Polygon { public: Polygon(float* polygon, int vertex) : polygon(polygon), vertex(vertex) {}; private: float* polygon; // 坐标形式...
标题 "C++写的两个小程序" 暗示了我们有两个基于C++编程语言编写的简单应用,它们可能是解决特定问题或实现特定算法的程序。在C++这种强大的面向对象编程语言中,这样的小程序通常用于练习编程技巧,提高对语言特性...
首先,我们可以比较两个序列的第一个元素,根据它们的大小关系调整序列,使得较小的一端总是放在前面。然后,不断缩小问题规模,直到序列只剩下一个元素,此时,这个元素可能是我们要找的中位数。 以下是减治法的...
C/C++实现两个大数相乘的源代码,同理可以实现两个无限小数的相乘,实现原理都是一样的。看代码就能写出来。
其基本思想是利用辗转相除法,即两个数a和b(a>b),通过不断地用较大的数除以较小的数,直到余数为0,此时较小的数就是GCD。最后一步的除数即为最大公约数。 2. **最小公倍数(LCM)的计算**: - **LCM与GCD的关系*...
通过对这个C++示例代码的分析,我们不仅了解了如何在C++中实现三个数的大小比较和排序,还深入了解了C++中函数定义、条件语句、数据类型和标准输入输出流等核心概念。这些知识点对于初学者来说至关重要,它们构成了...
C++实现两个集合类型(set)的并和差
本文件为c++源代码,比较两个集合的大小,若集合的长度不等就退出,集合元素值累加相等则相等,供各位参考!
Visual C++源代码 28 如何禁止程序同时运行两个Visual C++源代码 28 如何禁止程序同时运行两个Visual C++源代码 28 如何禁止程序同时运行两个Visual C++源代码 28 如何禁止程序同时运行两个Visual C++源代码 28 如何...
在C++编程环境中,比较两个数是一项基础但重要的任务,特别是在算法实现、数据处理和条件判断等场景。本文将深入探讨如何在Visual C++环境下,使用C++语言编写比较两个数的程序,并介绍相关的C++基础知识。 首先,...
C++两数相乘的源文件.供参考学习.
当我们有两个类A和B,且它们需要互相调用对方的成员时,通常会遇到两个主要问题:前置声明(Forward Declaration)和循环包含(Circular Inclusion)。让我们逐一分析: 1. 前置声明:在类A中使用类B的成员之前,...
为了实现这个算法,我们可以使用两个嵌套循环,一个循环遍历公鸡的数量,另一个循环遍历母鸡的数量,同时确保每次迭代的公鸡和母鸡数量之和不超过100。 在C++中,代码可能如下所示: ```cpp #include int main()...
这两个语言都强调内存管理,程序员需要手动分配和释放内存,这在学习过程中是非常重要的一个环节。 这些趣味小程序可能包括但不限于以下几个方面: 1. **数字游戏**:例如猜数字游戏,其中程序会生成一个随机数,...
通过学习和理解这个C++实现的小波分析代码,我们可以深入掌握小波理论,了解如何在实际问题中应用小波分析,以及如何在不依赖MATLAB的情况下,使用C++编写自己的小波分析程序。这对于信号处理和图像分析的项目开发来...
大家好,我是九天,是一名**生,学编程两个多月,整理了一些2D的游戏,希望大家喜欢!!!!!!!!!!!!!!!!!!!!!!!!!! 如果您能对九天提出宝贵的意见,感激不尽! 提意见网址:向12429909@qq....
在这个压缩包中,包含了两个不同版本的Dev-C++安装包,这为用户提供了选择的灵活性,可以根据个人需求和系统配置来安装合适的版本。 Dev-C++由Bloodshed Software开发,后来由 Orwell Software 继续维护。这个IDE...