传入引用与指针
Passing in References vs. Pointers
当我传入newTemp以设置EmergencyContact()时,我收到错误。我得到的错误是关于:
temp->Contact::setEmergencyContact(newTemp);
"错误:没有匹配的函数调用'联系人::设置紧急联系人(*&联系人)'"
所以我的问题是:如果你必须使用指针创建一个对象,你如何将对象传递给使用引用而不是指针的函数?
Contact generateRandomContact(){
// The name will be created with
// generateRandomName() and phone number will be created with
// generateRandomNumber(). Using the above random function,
// with 50% probability assign a new Contact as the emergencyContact
// of the one just generated. Otherwise leave it NULL (default).
// Then return this Contact.
Contact* temp = new Contact;
temp->Contact::changeName(generateRandomName());
temp->Contact::changeNumber(generateRandomNumber());
if(myrand(11) % 2 != 0){
Contact* newTemp = new Contact;
temp->Contact::setEmergencyContact(newTemp);
}
return *temp;
}
紧急联络功能:
void Contact::setEmergencyContact(Contact & _emergencyContact){
Contact* changeEmergencys = new Contact;
changeEmergencys = emergencyContact->getEmergencyContact();
}
取消引用它:
temp->setEmergencyContact(*newTemp)
void Contact::setEmergencyContact(Contact & _emergencyContact)
应该只是
void Contact::setEmergencyContact(Contact * _emergencyContact)
使用您的代码,仍然使用 ->
而不是 .
。
但是,如果要修改指针本身,可以使用
void Contact::setEmergencyContact(Contact* & _emergencyContact) {
Contact* changeEmergencys = new Contact;
changeEmergencys = _emergencyContact->getEmergencyContact();
}
请注意,如果取消引用它,则必须使用 .
而不是->
void Contact::setEmergencyContact(Contact & _emergencyContact) {
Contact* changeEmergencys = new Contact;
changeEmergencys = _emergencyContact.getEmergencyContact();
}
编辑函数以改为使用指针:
void Contact::setEmergencyContact(Contact * _emergencyContact)
或者按照 zmbq 的建议取消引用传递指针。
我看到你正在使用很多新的和删除我情不自禁地推荐智能指针并尽量减少使用新的和删除。
相关文章:
- 如何使用基类指针引用派生类成员
- 将常量指针引用绑定到非常量指针
- 如果非动态变量被指针引用,何时超出范围?
- 转换指针引用的字符串
- 指针引用的生存期(以 C++为单位)
- 从 unique_ptr::get 发送指针作为指针引用进入函数
- 指针/引用的 CLion 格式
- 使用模板专用化来比较指针引用
- 如何保存指向抽象基类的指针/引用,但在 c++ 中仍然可以复制
- C++初始化指针/引用/复制细微差别
- 用数组或指针引用函数?
- 指针范围问题和返回类中封装的指针向量内的指针引用
- 强制转换为指针引用是否会导致未定义的行为
- 访问由 void 指针引用的结构的成员
- C 为什么当先前的步骤引发异常时,std :: shared_ptr的指针引用会被破坏
- 动态指针引用数组由三元运算符返回值,但有异常
- 悬空指向 int 和 char* 常量的指针/引用
- C++ 二维数组和指针引用
- 通过使用指针/引用,在C++中使用向量加快计算速度
- C++非类型模板模板到函数指针/引用