C++ c++;继承问题,基类指针无法指向子类
我有一个名为classA.h的文件,如下所示C++ c++;继承问题,基类指针无法指向子类,c++,C++,我有一个名为classA.h的文件,如下所示 #include <iostream> using namespace std; class A { public: virtual void doSomething(); }; void A::doSomething() { cout << "inside A" << endl; } #include "classA.h" class B : public A { public:
#include <iostream>
using namespace std;
class A
{
public:
virtual void doSomething();
};
void A::doSomething()
{
cout << "inside A" << endl;
}
#include "classA.h"
class B : public A
{
public:
void doSomething();
};
void B::doSomething()
{
cout << "class B" << endl;
}
#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;
}
既然C从B继承,B从A继承,为什么我不能说
A*A=newc()代码>您忘记在main.cpp中包含“classB.h” 问题是B在classC.cpp中不可见。Chrate文件classB.cpp并将B的声明移动到那里。然后将其包含在classC.cpp中。您忘记了#包含“classB.h”
您需要整理您的包含文件和头文件。我怀疑这与继承有关。解决此问题后,可以通过在cpp文件中分离实现来解决以下链接器错误;)总是先解决第一个报告的问题。抱歉,这是个错误。实际上classB.cpp已经存在。创建classB.h并在其中声明B。
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