我想知道你们是否可以帮助我。
这是我的.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 上的 cons 成员。
************编辑:*********
我的主要问题是我希望另一个类有一个属性,即医生,就像病人有医生一样。但我希望能够改变我的医生。就像我正在看医生 A,但我想看医生 B。这可以使用我的另一个类(Pacient)中的 setDoctor 函数来完成。如果是我写代码,我会这样说:
class Patient{
Doctor &d;
};
然后更改指针。然而,我使用的是一位老师制作的基本代码,它的类定义如下:
class Patient{
Doctor d;
}
但我认为这是不可能做到的,因为使用 Patient 类中的 setDoctor() 我要么制作一个副本,要么更改变量本身。第一个没有任何区别,第二个由于 const 是不可能的。我对吗?
你快到了。几个值得注意的点:
名字不应该是const
合格的。 Aconst
不能被修改,这正是我们在赋值运算符中想要的。
C++ 关键字是class
并不是Class
因为你的代码有它(它会给你编译错误)
正如 Michael Burr 所指出的:“但应该注意的是,如果该类仅包含已经正确支持赋值的其他类(如本例中使用简单的字符串成员),则隐式的、编译器生成的运算符 =() 将正常工作”。就您而言,这里是唯一的成员string
有一个适当的op=
。所以明确定义是多余的。
Meeh 的解决方案已经差不多了。它唯一没有谈论的是自我分配。读FAQ 12.
赋值是三大成员函数之一常见问题27.10。查一下。它说,要求实现 copy ctor、op= 或 dtor 之一通常意味着您还需要实现其他两个。
更正后的代码示例应该是这样的:
class Doctor {
string name;
public:
Doctor& operator=(Doctor const& o) {
if (&o != this) name = o.name;
return *this;
}
// ...
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)