想先通过在类(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后面是不是一致。
//#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
谢谢了啊
不过这样后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后面是不是一致。
//#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
谢谢了啊
不过这样后osgframe = new CosgFrame; *这行
显示error C2512: 'CosgFrame' : no appropriate default constructor available
#3
CosgFrame 没有定义默认构造函数,或者默认构造函数是私有的。