Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何对来自不同头文件的类使用多态性?_C++_Class_Inheritance_Header_Polymorphism - Fatal编程技术网

C++ 如何对来自不同头文件的类使用多态性?

C++ 如何对来自不同头文件的类使用多态性?,c++,class,inheritance,header,polymorphism,C++,Class,Inheritance,Header,Polymorphism,我的头像中有阶级形象。h: class Figure { Color color; std::string position; ... }; 我想在header King.h中定义一个类King。在《国王》中也是如此 包括图h,并为ex编写: class King : public Figure { char type; bool checkIfTypeIsValid(std::string); ... }; 但这似乎不起作用,因为金不认

我的头像中有阶级形象。h:

class Figure
{
    Color color;
    std::string position;
    ...
};
我想在header King.h中定义一个类King。在《国王》中也是如此 包括图h,并为ex编写:

class King : public Figure
{
     char type;
     bool checkIfTypeIsValid(std::string);
     ...
};

但这似乎不起作用,因为金不认识这个人。。。我该怎么办?对于不同的继承类,使用不同的头文件是明智的,还是将它们放在一起,如图h所示?因为我会有一个女王,主教等人物,这将使相当多的标题和impl。文件..

首先:您不能从未知文件,甚至部分已知文件派生 班为了定义King,您必须首先包括Figure.h 假设King在另一个文件中定义

更一般地说,关于如何组织代码,没有人知道 明确的答案。就个人而言,在一个特定的情况下 我想,派生类的数量定义得很好,而且有严格的限制 可能是抄近路,并在图.h中定义所有这些,但有 为每个if使用单独标题的非常好的参数 除此之外,您不必包含个人的标题 创建图形的文件中的图形除外。另一个解决办法是 要对图形使用工厂函数,并定义导出的 实现工厂函数的源文件中的类。

首先需要包括figure.h

#include<Figure.h>

class King : public Figure
{
    ...
};

检查编译器的包含路径。这将像:-IPATH\u TO\u DIR\u\u\u FIGURE\u H\u所在的位置,不带引号。

确保king.H包含include FIGURE.H或include,只要FIGURE.H与king.H位于同一文件夹中的include路径上。如果您在Windows上,include标头的大小写可能不正确。在其他方面,确保案例是正确的。最后,如果Figure的定义位于名称空间内,则必须附加以下内容:

class King : public some_namespace::Figure
{
   //....
};

你说金不认得这个数字是什么意思。这应该行得通,你可能在别的地方出错了。命名错误?请注意大小写,不是每个人都在Windows上用户已经这样做了,请参见king.h中的。我确实包含figure.h,并为ex编写: