继承自 Unreal c++ 中的模板抽象类 [重复]

问题描述 投票:0回答:1

我正在虚幻引擎中做一个项目,假设我有一个

Base
类,它是一个模板化抽象类和一个
Derived
类,它继承自基类。

template <typename U>
class Base
{
public:
    Base();
    virtual ~Base();

    virtual U Add(U Number1, U Number2) = 0;
};

class Derived: public Base<int>
{
public:
    Derived();
    virtual ~Derived();

    virtual int Add(int Number1, int Number2) override;
};

如果我构建我的项目,我会得到这些错误:

  unresolved external symbol "public: __cdecl Base<int>::Base<int>(void)" (??0?$Base@H@@QEAA@XZ) referenced in function "public: __cdecl Derived::Derived(void)" (??0Derived@@QEAA@XZ)
  unresolved external symbol "public: virtual __cdecl Base<int>::~Base<int>(void)" (??1?$Base@H@@UEAA@XZ) referenced in function "public: virtual __cdecl Derived::~Derived(void)" (??1Derived@@UEAA@XZ)

我没有做过很多 C++,所以也许有人可以帮助我?谢谢!

c++ templates abstract-class unreal-engine5
1个回答
0
投票

将模板(成员)函数的定义放入标题中。这是最简单的解决方案;另一种方法可能是将定义保留在 cpp 中并为您使用的类型实例化模板,但这需要您列出使用它的所有类型。除非你做其中任何一个,否则模板成员函数不能被实例化或内联,因此链接器找不到它。

© www.soinside.com 2019 - 2024. All rights reserved.