不能明确专用化

Cannot be explicitly specialized

本文关键字:专用 不能      更新时间:2023-10-16

我收到此错误:

严重性代码说明项目文件行抑制状态 错误 C2910 "添加内容::添加内容": 不能显式 专业 BuckysTemplateSpecialization c:\users\amanuel\documents\visual 演播室 2015\项目\巴基斯模板专业化\巴基斯模板专业化

当我尝试运行此代码时:

#include<iostream>
#include<string>
template<class F, class S>
class addingStuff {
public:
    addingStuff(F fCons, S sCons) : f(fCons), s(sCons){}
    F addingStuffFunc();
private:
    F f; S s;
};
template<class F, class S>
F addingStuff<F, S>::addingStuffFunc() {
    return(f + s);
}
template<>
class addingStuff<std::string , std::string>{
public:
    addingStuff(std::string sConst, std::string s2Const):s(sConst), s2(s2Const){}   
    std::string addingStuffFunc();
private:
    std::string s, s2;
};
template<>
std::string addingStuff<std::string, std::string>::addingStuffFunc() {
    return "Sorry.. Adding strings is Illegal!!";
}
int main() {
    addingStuff<std::string, std::string> exampleStuff("Hello " , "World");
    std::cout << exampleStuff.addingStuffFunc() << std::endl;
}

不知道为什么..

你只需要:

std::string addingStuff<std::string, std::string>::addingStuffFunc() {
    return "Sorry.. Adding strings is Illegal!!";
}

额外的template <>被解释为成员函数的模板 id,代码被解释为它的显式专用化<>。但addingStuffFunc不是函数模板,因此会出现错误。