急求一个继承的问题
下面的代码12行一直报错“'BaseB' : no appropriate default constructor available”,请各路大神指点一下
#include<iostream>
using namespace std;
class BaseB;
class BaseA
{
public:
static BaseA* CreateObject();
virtual void DeleteObject()=0;
};
BaseA* BaseA::CreateObject()
{
return new BaseB();
}
class BaseB : public BaseA
{
public:
BaseB(){n_numA = 0;}
~BaseB(){}
virtual void DeleteObject(){delete this;};
private:
int n_numA;
};
int main()
{
BaseA *bA;
bA = BaseA::CreateObject();
delete bA;
return 0;
}
[解决办法]
BaseA类自己写一个缺省的构造函数看看
[解决办法]
#include<iostream>
using namespace std;
// 类和他们的函数声明放在头文件里面
// 函数实现放在CPP文件里面
class BaseB;
class BaseA
{
public:
static BaseA* CreateObject();
virtual void DeleteObject()=0;
};
/*
这个函数写在一个cpp文件里面
BaseA* BaseA::CreateObject()
{
return new BaseB();
}
*/
class BaseB : public BaseA
{
public:
BaseB(){n_numA = 0;}
~BaseB(){}
virtual void DeleteObject(){delete this;};
private:
int n_numA;
};
int main()
{
BaseA *bA;
bA = BaseA::CreateObject();
delete bA;
return 0;
}
class BaseB : public BaseA
{
public:
BaseB(){n_numA = 0;}
~BaseB(){}
virtual void DeleteObject(){delete this;};
private:
int n_numA;
};
// consoleTest.cpp : 定义控制台应用程序的入口点。
//
#include<iostream>
using namespace std;
class BaseA
{
public:
virtual void print()=0;
};
class BaseB : public BaseA
{
public:
BaseB(){n_numA = 0;}
~BaseB(){}
virtual void print(){cout<<"This is B!"<<endl;};
private:
int n_numA;
};
class BaseC
{
public:
static BaseA* CreateObject();
void deleteObject();
private:
static BaseA* m_pobj;
};
BaseA* BaseC::m_pobj = NULL;
BaseA* BaseC::CreateObject()
{
if (m_pobj == NULL)
{
m_pobj = new BaseB;
}
return m_pobj;
}
int main()
{
BaseA *bA;
bA = BaseC::CreateObject();
delete bA;
return 0;
}