我已經如下所示C++繼承問題,基類指針不能夠指向子類
#include <iostream>
using namespace std;
class A
{
public:
virtual void doSomething();
};
void A::doSomething()
{
cout << "inside A" << endl;
}
然後被叫classA.h文件我有一個ClassB.cpp如下所示
#include "classA.h"
class B : public A
{
public:
void doSomething();
};
void B::doSomething()
{
cout << "class B" << endl;
}
那麼我classC.cpp如下圖所示
#include <iostream>
#include "classA.h"
using namespace std;
class C : public B
{
public:
void doSomething();
};
void C::doSomething()
{
cout << "classC" << endl;
}
int main()
{
A * a =new C();
a->doSomething();
return 0;
}
當我編譯如下圖所示,我得到錯誤
g++ -Wall classB.cpp classC.cpp -o classC
classC.cpp:7: error: expected class-name before '{' token
classC.cpp: In function 'int main()':
classC.cpp:21: error: cannot convert 'C*' to 'A*' in initialization
由於C從B,從A繼承繼承,我爲什麼不能說A * a = new C();
你忘了'#include「classB.h」' –
你需要整理你的包含文件和頭文件。我懷疑這與繼承有什麼關係。 – juanchopanza
解決此問題後,可以通過在cpp文件中分離實現來解決以下鏈接器錯誤;) –