16

我可以像这样在cpp中定义一个专门的函数......

// 标题

template<typename T>
void func(T){}

template<>
void func<int>(int);

// cpp

template<>
void func<int>(int)
{}

如何在 cpp 的专用类中定义方法?像这样(这不起作用,我明白error C2910: 'A<int>::func' : cannot be explicitly specialized了)......

// 标题

template<typename T>
struct A
{
    static void func(T){}
};

template<>
struct A<int>
{
    static void func(int);
};

// cpp

template<>
void A<int>::func(int)
{}
4

1 回答 1

7

.cpp在您的文件中使用以下语法:

void A<int>::func(int)
{
}

这是 Visual C++ 的一种特性。

有关详细信息,请参阅MSDN C2910 错误描述

由于在 Visual Studio .NET 2003 中完成的编译器一致性工作,也会生成此错误:。对于将在 Visual Studio .NET 2003 和 Visual Studio .NET 版本的 Visual C++ 中有效的代码,删除模板 <>

于 2012-10-23T16:28:51.927 回答