无论如何,都会获得数十个“未定义的引用”

时间:2019-12-07 07:13:35

标签: c++ g++

我正在开发国际象棋逻辑,以便创建一个游戏(它尚无可视界面),我有一个项目,该项目包含两个文件夹:带有.cpp文件的src/和带有标题的include/。这两个文件夹有一个相似的chessmen,分别带有源文件和头文件。这些文件包含从具有模板构造函数的“模式”类Chessman继承的类:

Chessman.h:

class Chessman {
protected:

    Chessman_TYPE type;
public:

    template <typename Chessman_TYPE>
    static Chessman *createChessman();
};

Chessman.cpp:

template <typename Chessman_TYPE>
Chessman *Chessman::createChessman() {
    Chessman *chessman;
    chessman = new Chessman_TYPE;
    return chessman;
}

其中Chessman_TYPE是枚举。 在其他文件中使用它后,它无法编译:

undefined reference to 'Chessman* Chessman::createChessman<Pawn>()'

我在这里使用它(字段是* Chessman指针的数组):

Field[1][1] = Chessman::createChessman <Pawn> ();

编译时,我使用g++ -o out src/*.cpp src/chessmen/*.cpp

每个.cpp文件都有其自己的标头。出于某些原因(尽管他们有#ifndef东西),每个Chessman.h中都包含了每个象棋手,每个Chessman.h中都包含了Chessman.h

0 个答案:

没有答案