使用复制构造函数时出错
Having error in using copy constructor
我在 dev-cpp 中写了这段代码 - 大约 class 的时间。我在这个程序中使用了复制构造函数,但我收到了这个错误:“[Error] 'Time t2' previously declared here”
这是什么原因,我该怎么办?
#include<iostream>
using namespace std;
class Time{
public:
int hour;
int min;
int sec;
Time(int h,int m, int s){
this->hour=h;
this->min=m;
this->sec=s;
}
Time(Time *t){
t->hour=this->hour;
t->sec=this->sec;
}
};
void print(Time *t){
cout<<t->hour<<':'<<t->min<<':'<<t->sec<<endl;
}
int main(){
Time t1(6,18,25);
Time t2(11,45,13);
Time(&t2);
print(&t1);
cout<<endl;
print(&t2);
return 0;
}
在你的构造函数重载中
Time(Time *t){
t->hour=this->hour;
t->sec=this->sec;
}
你可能放错了 this
和 t
,因为你显然想将数据从传递的对象复制到新创建的对象,而不是像你现在做的那样相反。
另外,min
成员这里不见了。
Time(Time *t){
this->hour=t->hour;
this->min=t->min;
this->sec=t->sec;
}
然后,要使用此构造函数,您需要为新对象命名。变化
Time(&t2);
进入
Time t3(&t2);
也就是说,您可以使用赋值或复制构造简单地复制 class 对象。自动为您创建适当的复制构造函数和赋值运算符。您可以简单地编写 Time t3 = t2;
或 Time t3(t2);
并摆脱上面的构造函数。
在您的 main() 函数中,您需要命名第三个时间变量。
Time(&t2);
应该是
Time t3(&t2);
还有,@leemes 说的。
我在 dev-cpp 中写了这段代码 - 大约 class 的时间。我在这个程序中使用了复制构造函数,但我收到了这个错误:“[Error] 'Time t2' previously declared here” 这是什么原因,我该怎么办?
#include<iostream>
using namespace std;
class Time{
public:
int hour;
int min;
int sec;
Time(int h,int m, int s){
this->hour=h;
this->min=m;
this->sec=s;
}
Time(Time *t){
t->hour=this->hour;
t->sec=this->sec;
}
};
void print(Time *t){
cout<<t->hour<<':'<<t->min<<':'<<t->sec<<endl;
}
int main(){
Time t1(6,18,25);
Time t2(11,45,13);
Time(&t2);
print(&t1);
cout<<endl;
print(&t2);
return 0;
}
在你的构造函数重载中
Time(Time *t){
t->hour=this->hour;
t->sec=this->sec;
}
你可能放错了 this
和 t
,因为你显然想将数据从传递的对象复制到新创建的对象,而不是像你现在做的那样相反。
另外,min
成员这里不见了。
Time(Time *t){
this->hour=t->hour;
this->min=t->min;
this->sec=t->sec;
}
然后,要使用此构造函数,您需要为新对象命名。变化
Time(&t2);
进入
Time t3(&t2);
也就是说,您可以使用赋值或复制构造简单地复制 class 对象。自动为您创建适当的复制构造函数和赋值运算符。您可以简单地编写 Time t3 = t2;
或 Time t3(t2);
并摆脱上面的构造函数。
在您的 main() 函数中,您需要命名第三个时间变量。
Time(&t2);
应该是
Time t3(&t2);
还有,@leemes 说的。