【发布时间】:2017-04-27 01:10:05
【问题描述】:
给定以下类:
// myClass.hpp
class Child1;
class Child2;
class MyClass {
public:
virtual void doSomething (const MyClass&) const = 0;
virtual void doSomething (const Child1&) const = 0;
virtual void doSomething (const Child2&) const = 0;
};
// child1.hpp
#include "myClass.hpp"
class Child1 : public MyClass {
public:
virtual void doSomething (const MyClass&) const override;
virtual void doSomething (const Child1&) const override;
virtual void doSomething (const Child2&) const override;
};
// child2.hpp
#include "myClass.hpp"
class Child2 : public MyClass {
public:
virtual void doSomething (const MyClass&) const override;
virtual void doSomething (const Child1&) const override;
virtual void doSomething (const Child2&) const override;
};
编译器给了我错误:
undefined reference to 'Child1::doSomething(MyClass const&)'
对于其他 doSomething(..) 函数会打印相同的错误。
我确定在包含文件时存在一些错误(我对每个头文件都使用包含保护!!)。我的问题是:我必须在哪里包含相应的文件以及我需要在哪里进行前向声明?
【问题讨论】:
-
请检查您的 cpp 文件,如果它们甚至已编译,请添加更多代码,以便我们查看您拥有的全部内容。
标签: c++ class inheritance include