gpt4 book ai didi

C++ 模板,静态函数特化

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:56 25 4
gpt4 key购买 nike

我的模板有语法错误

我想部分特化我的模板类的静态函数

类.hpp

template <typename Foo, size_t bar = 26>
class MyClass
{
MyClass();
static void function();
};

#include "class.tpp"

类.tpp

template <typename Foo, bar>
MyClass<Foo, bar>::MyClass()
{ }

template <typename Foo>
inline
void
MyClass<Foo, 6>::function()
{
// ...
}

template <typename Foo>
inline
void
MyClass<Foo, 26>::function()
{
// ...
}

error: template definition of non-template

我只想实现MyClass<Foo, bar>::function对于 bar == 26 和 bar == 6

如何正确地做到这一点?谢谢

最佳答案

函数本身不是模板,它只在类模板中。您可以针对这些情况专门化类,但不能专门化函数本身。

template <class Foo>
class MyClass<Foo, 26>
{
static void function() { ... }
};

如果你像这样特化了类,你只能在类内部声明函数,然后在外部定义它:

template <class Foo>
void MyClass<Foo, 26>::function() { ... }

如果您事先不特化它,您将因使用不完整的类型而收到编译错误。

您可能还会找到 this关于在相关的类模板中专门化单个函数的问题和答案。

关于C++ 模板,静态函数特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610939/

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