不能明确专用化
Cannot be explicitly specialized
我收到此错误:
严重性代码说明项目文件行抑制状态 错误 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
不是函数模板,因此会出现错误。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么我的for循环不能正确获取argv
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 为什么我不能在 FOR LOOP 中使用 i/10,C++?
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 为什么模板类中的对象不能返回值
- 为什么 Visual C++不能部分专用化模板中的类?
- 不能在 Visual Studio 2017 中显式专用
- 不能继承 clang 和 gcc 中同一类的显式模板专用化
- Qt nmake:错误 C3203:"map":非专用类模板不能用作模板参数"base"的模板参数,预期为真实类型
- 类模板:为什么我不能将单一方法专用于空类型?
- 不能明确专用化
- 显式模板专用化不能具有存储类 - 成员方法专用化
- 显式专用化不能是朋友声明
- 错误 C3203:'OMSSPDisk':非专用类模板不能用作模板参数"_Kty"的模板参数,应为实际类型
- 为什么我不能专用函数模板?
- 为什么我不能调用以下代码的C++显式专用化版本?
- 为什么专用模板函数不能同时接受类型及其常量版本?
- 为什么模板专用化不能更改返回类型