C++ 为什么{}不能被删除?为什么不能传输字符类型变量?
以下是源文件:C++ 为什么{}不能被删除?为什么不能传输字符类型变量?,c++,templates,C++,Templates,以下是源文件: myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){} #包括 #包括“ClassTemplate.h” 使用std::cout; 使用std::endl; int main() { myClass 1(3,5); 类别1.show(); myClass 2(3,“a”); class2.show(); myClass 3(2.9,10); class3.show(); } 错误编译结果如下: #include <ios
myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}
#包括
#包括“ClassTemplate.h”
使用std::cout;
使用std::endl;
int main()
{
myClass 1(3,5);
类别1.show();
myClass 2(3,“a”);
class2.show();
myClass 3(2.9,10);
class3.show();
}
错误编译结果如下:
#include <iostream>
#include "ClassTemplate.h"
using std::cout;
using std::endl;
int main()
{
myClass<int,int> class1(3,5);
class1.show();
myClass<int,char> class2(3,"a");
class2.show();
myClass<double,int> class3(2.9,10);
class3.show();
}
$g++ClassTemplate\u Test.cpp
ClassTemplate_Test.cpp:在函数“int main()”中:
ClassTemplate_Test.cpp:12:36:错误:从“const char*”到“char”[-fppermissive]的转换无效
ClassTemplate.h:20:1:错误:初始化'myClass::myClass(T1,T2)[with T1=int,T2=char]'[-fppermissive]的参数2
如何解决?谢谢
$ g++ ClassTemplate_Test.cpp
ClassTemplate_Test.cpp: In function ‘int main()’:
ClassTemplate_Test.cpp:12:36: error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
ClassTemplate.h:20:1: error: initializing argument 2 of ‘myClass<T1, T2>::myClass(T1, T2) [with T1 = int, T2 = char]’ [-fpermissive]
至于您的编译错误,只需从“”到“”进行简单的修复即可解决
改变
myClass<T1,T2>::myClass(T1 a,T2 b)
:I(a),J(b)
{
}
myClass 2(3,“a”);
到
myClass类2(3,'a');
这是因为“a”
被视为类型为const char*
的a<另一方面,代码>'a'被视为您和您的构造函数所期望的字符。myClass::myClass(T1 a,t2b):I(a),J(b){}
myClass<int,char> class2(3,'a');
这定义了一个函数。功能有一个主体。函数体定义为花括号(即:{})之间的内容。因此,即使函数为空,也必须用一对大括号来定义它。它是构造函数的(主体)定义。它是空的,但即使是空的定义也是一个定义。必须定义构造函数。请尝试传递“a”而不是“a”。“a'是字符,“a”是常量字符*+1。这就像编写void f(){}
这是一个具有空体的函数。
myClass<T1,T2>::myClass(T1 a,T2 b)
:I(a),J(b)
{
}
myClass<int,char> class2(3,"a");
myClass<int,char> class2(3,'a');
myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}