我的标题“figure.h”中有类图:
class Figure
{
Color color;
std::string position;
...
};
我想在标题“king.h”中定义一个类King。所以在king.h我做
#include "figure.h"
,并写为ex:
class King : public Figure
{
char type;
bool checkIfTypeIsValid(std::string);
...
};
但这似乎不起作用,因为King不承认图......我该怎么办?对于不同的继承类有不同的标题,或者只是将它们放在“figure.h”中是否很明智?因为我会有一个女王,主教等人物,这将产生相当多的标题和impl。文件..
答案 0 :(得分:0)
首先:你不能从一个未知的,甚至是部分已知的
类。要定义King
,您必须先包含Figure.h
(假设King
在不同的文件中定义)。
更一般地说,关于如何组织代码,没有人
明确的答案。就个人而言,在一个特定的情况下(其中
我知道派生类的数量是明确定义的并且是严格约束的
可能会在Figure.h
中偷工减料并定义所有这些,但也有
为每个if使用单独的标头的非常好的参数
没有别的,你不必包括个人的标题
除了创建它们的文件之外的数字。另一种解决方案
是为数字使用工厂函数,并定义派生
源文件中实现工厂函数的类。
答案 1 :(得分:0)
您首先需要包含figure.h
。
#include<Figure.h>
class King : public Figure
{
...
};
答案 2 :(得分:0)
检查编译器的包含路径。它就像:-I“PATH_TO_DIR_WHERE_FIGURE_H_LOCATED”,没有引号。
答案 3 :(得分:0)
确保king.h
包含#include "figure.h"
或#include <figure.h>
,只要figure.h
位于与king.h
相同的文件夹中的包含路径中。如果您使用的是Windows,则包含标头可能包含错误的大小写。在其他一切,确保案件是正确的。最后,如果Figure
的定义在命名空间内,则必须附加:{/ p>
class King : public some_namespace::Figure
{
//....
};