【发布时间】:2014-04-25 11:27:21
【问题描述】:
场景是我有一个函数,它在我想初始化时调用参数化构造函数。所以我想做的是在我想要的时候调用我选择的构造函数。但是当我使用A() 调用默认构造函数时它可以工作,但它不适用于带有参数的构造函数,而是我收到以下错误。
错误1 错误C2082:重新定义形参 'tmp' c:\users\adnan\documents\visual studio 2012\projects\project3\project3\source.cpp 12 1 项目3
class A
{
public:
int id;
void i(int tmp)
{
A(tmp);
}
A()
{
cout<<"default const"<<endl;
}
A(int id)
{
this->id = id;
}
};
int main()
{
A obj[2];
for(int i=0;i<2;i++)
{
obj[i].i(i*2);
}
cout<<"obj[0].id = "<<obj[0].id;
cout<<endl;
cout<<"obj[1].id = "<<obj[1].id;
cout<<endl;
system("pause");
return 0;
}
【问题讨论】:
-
如果你想要这个效果,在函数中调用像
A(tmp);这样的构造函数不会改变id。它只会创建一个临时对象并立即消失。
标签: c++ debugging constructor redefinition