C++ c++;继承问题,基类指针无法指向子类

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:

我有一个名为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:
    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