现在遇到一个比较初级的问题,还望版上的大神能够不吝赐教!
现在我在Qt上开发一个界面,不过总的来说还是一个类,所以这个问题就归结为在一个类中调用另外一个类
问题如下:
首先
class cameraGet : public QMainWindow
{
Q_OBJECT
public:
//定义PTZ摄像机控制参数
VISCA_Cam * Cam1;
VISCA_Timer2* tm1;
}
这里简化了代码,主要就是定义了这么两个类
然后再构造函数中进行了new,代码如下:
cameraGet::cameraGet(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::cameraGet)
{
ui->setupUi(this);
timer = new QTimer(this);
imag = new QImage(); // 初始化
//initialize the PTZ protocol
tm1= new VISCA_Timer2; //
DWORD result;
char* nPortc="COM1";
Cam1 =new VISCA_Cam(nPortc,1,1,result); //打开串口
}
上述代码也经过简化,主要就是对定义的两个类进行了new,但是后面貌似这个没有new好,出现了
“底层由于接收到操作系统的信号而停止”
这个错误提示,网上搜了下好像类没有定义好之类的,那么相对于我这个代码而言,只有这两个类有问题,所以还请各位帮忙看看,非常感谢!!
------解决方案--------------------------------------------------------
只要你有包含你需要调用的类的头文件 在哪里都能构造该类的对象啊、、另外一种可能就是 你调用的那个累的构造函数是私有的也就是C++的单例模式、这样的话是不能调用构造函数的..其他我就想不到了 呵呵!
------解决方案--------------------------------------------------------
这个跟类互相调用应该没什么关系, 你直接调用如下代码:
void test() {
VISCA_Cam * Cam1 = new VISCA_Cam(nPortc,1,1,result);
}
重现问题, 再debug进去看一下, 哪一行代码导致异常抛出?
------解决方案--------------------------------------------------------
楼主说的不成功具体指什么, 我猜是下面这句返回false了,对吗?
com->connect(newPort, 9600, SERIAL_PARITY_NONE, 8, false);