`
kofsky
  • 浏览: 201731 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

两个C++的小问题

阅读更多

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,不为空再继续执行;

 

分享到:
评论

相关推荐

    C++小球碰撞C++ 小球碰撞

    - **碰撞检测**:确定两个或多个图形对象是否发生接触的过程。 - **碰撞响应**:当检测到碰撞发生时,对这些图形对象进行相应的物理行为调整,例如改变速度、方向等。 - **物理引擎**:一种软件库,用于处理游戏中...

    6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)

    6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行...

    C++两个一维数组相加求和

    本问题主要探讨了如何在C++中实现两个一维数组的相加求和。下面将详细阐述这一过程及其涉及的关键知识点。 首先,我们创建了两个一维整型数组`arr1`和`arr2`,分别初始化为`{1, 2, 3, 4, 5}`和`{6, 7, 8, 9, 10}`。...

    计算两个多边形的重叠面积(C++)

    写一个C++程序,计算两个多边形的重叠面积 多边形class定义如下: class Polygon { public: Polygon(float* polygon, int vertex) : polygon(polygon), vertex(vertex) {}; private: float* polygon; // 坐标形式...

    C++写的两个小程序

    标题 "C++写的两个小程序" 暗示了我们有两个基于C++编程语言编写的简单应用,它们可能是解决特定问题或实现特定算法的程序。在C++这种强大的面向对象编程语言中,这样的小程序通常用于练习编程技巧,提高对语言特性...

    求两个序列的中位数 减治法——C++代码

    首先,我们可以比较两个序列的第一个元素,根据它们的大小关系调整序列,使得较小的一端总是放在前面。然后,不断缩小问题规模,直到序列只剩下一个元素,此时,这个元素可能是我们要找的中位数。 以下是减治法的...

    C/C++实现两个大数相乘源代码

    C/C++实现两个大数相乘的源代码,同理可以实现两个无限小数的相乘,实现原理都是一样的。看代码就能写出来。

    求两个数的最小公倍数和最大公约数C++源码。

    其基本思想是利用辗转相除法,即两个数a和b(a>b),通过不断地用较大的数除以较小的数,直到余数为0,此时较小的数就是GCD。最后一步的除数即为最大公约数。 2. **最小公倍数(LCM)的计算**: - **LCM与GCD的关系*...

    c++ 三个数大小的比较

    通过对这个C++示例代码的分析,我们不仅了解了如何在C++中实现三个数的大小比较和排序,还深入了解了C++中函数定义、条件语句、数据类型和标准输入输出流等核心概念。这些知识点对于初学者来说至关重要,它们构成了...

    C++实现两个集合类型(set)的并和差

    C++实现两个集合类型(set)的并和差

    比较两个集合大小,c++源代码,

    本文件为c++源代码,比较两个集合的大小,若集合的长度不等就退出,集合元素值累加相等则相等,供各位参考!

    Visual C++源代码 28 如何禁止程序同时运行两个

    Visual C++源代码 28 如何禁止程序同时运行两个Visual C++源代码 28 如何禁止程序同时运行两个Visual C++源代码 28 如何禁止程序同时运行两个Visual C++源代码 28 如何禁止程序同时运行两个Visual C++源代码 28 如何...

    用c++语言编写的比较两个数的程序

    在C++编程环境中,比较两个数是一项基础但重要的任务,特别是在算法实现、数据处理和条件判断等场景。本文将深入探讨如何在Visual C++环境下,使用C++语言编写比较两个数的程序,并介绍相关的C++基础知识。 首先,...

    C++两数相乘

    C++两数相乘的源文件.供参考学习.

    C++ 包含类两个类互相调用彼此的类成员变量和方法

    当我们有两个类A和B,且它们需要互相调用对方的成员时,通常会遇到两个主要问题:前置声明(Forward Declaration)和循环包含(Circular Inclusion)。让我们逐一分析: 1. 前置声明:在类A中使用类B的成员之前,...

    c++ 百钱买鸡问题 百鸡问题

    为了实现这个算法,我们可以使用两个嵌套循环,一个循环遍历公鸡的数量,另一个循环遍历母鸡的数量,同时确保每次迭代的公鸡和母鸡数量之和不超过100。 在C++中,代码可能如下所示: ```cpp #include int main()...

    12个C/C++趣味小程序

    这两个语言都强调内存管理,程序员需要手动分配和释放内存,这在学习过程中是非常重要的一个环节。 这些趣味小程序可能包括但不限于以下几个方面: 1. **数字游戏**:例如猜数字游戏,其中程序会生成一个随机数,...

    C_C++ Wavelet小波分析之一维小波分解与重构

    通过学习和理解这个C++实现的小波分析代码,我们可以深入掌握小波理论,了解如何在实际问题中应用小波分析,以及如何在不依赖MATLAB的情况下,使用C++编写自己的小波分析程序。这对于信号处理和图像分析的项目开发来...

    Dev-C++编小游戏

    大家好,我是九天,是一名**生,学编程两个多月,整理了一些2D的游戏,希望大家喜欢!!!!!!!!!!!!!!!!!!!!!!!!!! 如果您能对九天提出宝贵的意见,感激不尽! 提意见网址:向12429909@qq....

    里面包含两个版本的devc++安装包.7z

    在这个压缩包中,包含了两个不同版本的Dev-C++安装包,这为用户提供了选择的灵活性,可以根据个人需求和系统配置来安装合适的版本。 Dev-C++由Bloodshed Software开发,后来由 Orwell Software 继续维护。这个IDE...

Global site tag (gtag.js) - Google Analytics