我需要实现一个类的复制构造函数。
我的要求是所有对象都需要共享相同的数据。 例如:如果我更改一个对象的名称,则其他所有对象都将获得新的对象名称。
这是我的代码:
#include <iostream>
using namespace std;
class Contact
{
public:
string name;
//Constructor:
Contact(string n){
name = n;
};
/*
// Copy constructor:
*/
};
int main(int argc, const char * argv[]) {
Contact c1("albert");
Contact c2 = c1; //create a copy of c1
c1.name = "mark"; //modify c1 name
cout << c2.name << endl; //My problem: I want this output is "mark"
return 0;
}
有可能用指针吗?
我尝试此代码,但出现错误: “错误:左值必须作为赋值的左操作数”
// Copy constructor:
Contact (const Contact &c){
&( this -> name ) = &c.name;
}
答案 0 :(得分:1)
如果我更改一个对象的名称,则其他所有对象都将获得新的对象名称。
这是一个奇怪的要求。一个类的所有实例都具有相同的名称是没有道理的。
不管需求的适当性,需求表明您需要一些独立于类实例的数据。它可以是类的static
成员变量,也可以是全局变量,最好是作用于名称空间。
class Contact
{
public:
static std::string name;
//Constructor:
Contact(){}
// Copy constructor:
};
或
namespace MyApp
{
// Make sure to define it in an appropriate .cpp file.
extern std::string contact_name;
class Contact
{
public:
//Constructor:
Contact(){}
// Copy constructor:
};
}