【发布时间】:2010-10-19 01:23:07
【问题描述】:
我想知道你们是否可以帮助我。
这是我的 .h:
Class Doctor {
const string name;
public:
Doctor();
Doctor(string name);
Doctor & Doctor::operator=(const Doctor &doc);
}
和我的主要:
int main(){
Doctor d1 = Doctor("peter");
Doctor d2 = Doctor();
d2 = d1;
}
我想做 operator= 函数。谁能帮我?注意 Doctor 上的 const 成员。
************编辑:********* 我的主要问题是我希望另一个类有一个属性,它是一个医生,就像一个病人有一个医生。但我希望能够改变我的医生。就像我正在看医生 A 但我想看医生 B。这将在我的其他班级 (Pacient) 中使用 setDoctor 函数来完成。如果是我编写代码,我会这样说:
class Patient{
Doctor &d;
};
然后更改指针。但是,我使用的是一位老师制作的基本代码,它的类定义如下:
class Patient{
Doctor d;
}
但我认为这是不可能的,因为在 Patient 类中使用 setDoctor() 时,我要么制作副本,要么更改变量本身。第一个没有任何区别,第二个由于 const 是不可能的。我说的对吗?
【问题讨论】:
-
如果它明显要改变,你为什么要把它设为 const?
-
但是它没有初始化……我记不太清楚了,但我认为它一旦初始化就不能改变。
-
你不是复制构造函数有什么原因吗?
-
但是他在做 d2 = d1 - 这意味着 d2 的名字应该改变。
-
您所要求的无法完成。按定义分配会更改您分配给的对象。如果它是 const,你就不能这样做。如果 'name' 字符串是 const,那么它一旦被初始化就不能被修改。如果你做一个赋值运算符,它必须跳过'name'字符串。
标签: c++ operators operator-overloading constants conversion-operator