我想对const变量进行初始化,并在类外的构造函数中编写一些代码。
test.cpp:13:4: error: redefinition of 't'
t::t(int n){
^
test.cpp:7:5: note: previous definition is here
t(int n) : num(n),z(n) {}
^
test.cpp:13:4: error: constructor for 't' must explicitly initialize the const
member 'num'
t::t(int n){
^
test.cpp:9:15: note: declared here
const int num;
^
test.cpp:21:7: error: no matching constructor for initialization of 't'
t ob(4);
^ ~
test.cpp:4:7: note: candidate constructor (the implicit copy constructor) not
viable: no known conversion from 'int' to 'const t' for 1st argument
class t
#include<iostream>
using namespace std;
class t
{
public:
t(int n) : num(n),z(n) {}
private:
const int num;
int z;
};
t::t(int n){
cout<<"TEST";
}
int main()
{
t ob(4);
return 0;
}
答案 0 :(得分:3)
您已经两次定义了相同的构造函数。
在这里:
t(int n) : num(n),z(n) {}
在这里:
t::t(int n){
cout<<"TEST";
}
要解决此问题,您可以将其更改为:
t(int n);
并且:
t::t(int n) : num(n),z(n) {
cout<<"TEST";
}
或者根据需要将定义保留在类内(在这种情况下,它将是内联的)。