作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我从 java 跳到 C++,同时我在 IS-A 关系和头文件方面遇到了一些麻烦。
我有 4 个类(class),爷爷、父亲、 child 和家,有 4 个头文件和 4 个源文件。grandpa(abstract class) -> father -> child,他们遵循IS-A关系。
父亲将使用家庭类中的方法(这意味着我已经在父亲类中初始化了一个家庭实例)。home 还将初始化 child 的实例。
在main函数中,我初始化了一个home的实例,使用在home中初始化的child来运行继承父类的方法。当我构建解决方案时,IDE 说未定义父基类。我确定我已经包含了不同文件所需的所有头文件。
最后,我找到了一个解决方案,我将父类和子类的头文件,以及源文件也结合起来。然后问题就解决了。
任何人都可以告诉我在我以前的情况下发生了什么吗?
father.h
# pragma once
#include "home.h"
class father
{
public:
virtual run(){home::instance()->run();};
}
Child.h
# pragma once
#include "father.h"
class child:public father
{
public:
virtual run(){father::run();};
}
home.h
# pragma once
#include "child.h"
class home
{
public:
void run(){std::cout<<"test";};
void run2(){g = new child(); g->run();};
private:
Grandapa g;
}
最佳答案
你有一个循环依赖,home.h
包括 child.h
其中包括 father.h
其中包括 home.h
您需要在某个头文件中进行前向声明。
关于C++ IS-A关系和头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20513342/
我是一名优秀的程序员,十分优秀!