菜鸟求助高手!!在一个类中声明另一个类的对象,no appropriate default constructor available

时间:2020-12-27 18:57:32
在一个类(A)的成员函数中想调用另一个类(B)的成员函数
想先通过在类(A)中声明类(B)的对象,再通过对象调用

在一个类中声明另一个类的对象时出了问题
#include "osgFrame.h"
class CPBSystemView : public CView
{
private:
CosgFrame osgframe;
......
}

CPBSystemView::CPBSystemView()
{
// TODO: add construction code here    *
osgframe = new CosgFrame;              *
}
出现了
error C2512: 'CosgFrame' : no appropriate default constructor available
error C2512: 'CosgFrame' : no appropriate default constructor available
分别指向加*的两行

3 个解决方案

#1


这样改一下,头文件
//#include "osgFrame.h" 
class CosgFrame;
class CPBSystemView : public CView 

private: 
CosgFrame  * osgframe; 
...... 


cpp文件
#include "osgFrame.h" 
CPBSystemView::CPBSystemView() 

// TODO: add construction code here    * 
osgframe = new CosgFrame;              * 


当然你在头文件里面#include也可以,但是我还是建议用class前向声明好一些。
看看你那个类的构造函数和new后面是不是一致。

#2


引用 1 楼 gordon3000 的回复:
这样改一下,头文件
//#include "osgFrame.h"
class CosgFrame;
class CPBSystemView : public CView
{
private:
CosgFrame *osgframe;
......
}

cpp文件
#include "osgFrame.h"
CPBSystemView::CPBSystemView()
{
// TODO: add construction code here    *
osgframe = new CosgFrame;              *
}

当然你在头文件里面#include也可以,但是我还是建议用class前向声明好一些。
看看你那个类的构造函数和new后面是不是一致。


谢谢了啊
不过这样后osgframe = new CosgFrame;              *这行
显示error C2512: 'CosgFrame' : no appropriate default constructor available

#3


CosgFrame 没有定义默认构造函数,或者默认构造函数是私有的。

#1


这样改一下,头文件
//#include "osgFrame.h" 
class CosgFrame;
class CPBSystemView : public CView 

private: 
CosgFrame  * osgframe; 
...... 


cpp文件
#include "osgFrame.h" 
CPBSystemView::CPBSystemView() 

// TODO: add construction code here    * 
osgframe = new CosgFrame;              * 


当然你在头文件里面#include也可以,但是我还是建议用class前向声明好一些。
看看你那个类的构造函数和new后面是不是一致。

#2


引用 1 楼 gordon3000 的回复:
这样改一下,头文件
//#include "osgFrame.h"
class CosgFrame;
class CPBSystemView : public CView
{
private:
CosgFrame *osgframe;
......
}

cpp文件
#include "osgFrame.h"
CPBSystemView::CPBSystemView()
{
// TODO: add construction code here    *
osgframe = new CosgFrame;              *
}

当然你在头文件里面#include也可以,但是我还是建议用class前向声明好一些。
看看你那个类的构造函数和new后面是不是一致。


谢谢了啊
不过这样后osgframe = new CosgFrame;              *这行
显示error C2512: 'CosgFrame' : no appropriate default constructor available

#3


CosgFrame 没有定义默认构造函数,或者默认构造函数是私有的。