gpt4 book ai didi

c++ - C++中模板类成员函数的特化

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:42 25 4
gpt4 key购买 nike

我想创建一个模板类 foo,并根据 foo 的模板类型专门化其成员函数 test() 之一。 M 的第一次尝试是将代码包含在定义 foo 的头文件中:

template<typename Type>
class foo
{
foo()
~foo()
test()
};

template<>
foo<float>::test()
{ code ... };

问题是,如果我使用这个头文件编译和链接多个文件,我会得到多重定义的错误。

我还尝试在 header 中声明特化,因此编译器知道它不应该生成模板化代码。然后我将专门的定义放在一个单独的 C++ 文件中进行编译。然后标题看起来像:

template<typename Type>
class foo
{
foo()
~foo()
test()
};

template<>
foo<float>::test();

但是我得到了一个 undefined reference 错误。

我应该如何组织专门成员函数的声明和定义?

最佳答案

声明放在头文件中,定义放在源文件中。

由于函数完全由声明指定,定义可以在任何翻译单元中。与应用程序链接。

或者在头文件中将函数定义内联

关于c++ - C++中模板类成员函数的特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26760264/

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