gpt4 book ai didi

c++ - 即使在显式实例化之后仍会出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:30 26 4
gpt4 key购买 nike

我正在尝试获取一个模板代码,将头文件和 cpp 文件分开。我为此使用显式实例化。但我仍然收到 undefined reference 错误。

foo.h

template<typename T>
class Foo
{
public:
void f();
};

foo.cc

#include <iostream>
#include "Foo.h"

template<typename T>
void Foo<T>::f()
{
std::cout << "Foo<T>::f()\n";
}

template class Foo<int>;

主.cc

#include "foo.h"

int main()
{
Foo<int> x;
x.f();
}

当我编译时:

g++ main.cc -o test
/tmp/ccfHjiVJ.o: In function `main':
main.cc:(.text+0x10): undefined reference to `Foo<int>::f()'
collect2: ld returned 1 exit status

我使用的gcc版本是gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)

最佳答案

你忘记在编译命令中编译foo.cc,添加foo.cc:

g++ main.cc foo.cc -o test
^^^^^^

关于c++ - 即使在显式实例化之后仍会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23627845/

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