gpt4 book ai didi

c++使用模板的 undefined reference

转载 作者:行者123 更新时间:2023-11-28 00:54:51 26 4
gpt4 key购买 nike

所以我有以下代码:

template<class T>
class A
{
public:

class B
{
public:
virtual void Destroy(T obj);
};

B &_b;

A(B b) : _b(b)
{
}

void Go(T obj)
{
_b.Destroy(obj);
}
};

class X : public A<int>::B
{
public:
void Destroy(int x)
{
//do something
}
};

int main()
{
X x;
A<int> a(x);
a.Go(5);
return 0;
}

但是我得到一个编译错误:

undefined reference to 'A<int>::B::Destroy(int)'

我以前在单独的 .hpp 和 .cpp 文件中制作模板时遇到过问题...但这都在一个文件中。

谢谢。

最佳答案

  • virtual void Destroy(T obj); 未实现。实现它或将其标记为 virtual pure = 0

  • X

    定义后没有;
  • a.Go();是错误的,Go应该带一个参数。

关于c++使用模板的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12063422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com