【发布时间】:2015-04-28 01:39:49
【问题描述】:
这个程序
我的对象Class 有一个成员变量balance,它在初始化期间设置并通过augment 方法进行操作,该方法给balance 添加一个double。
Class 对象嵌套在 Class2 对象的一个数组中,该对象只有 Class 对象数组作为其成员。 Class2 对象具有访问 Class 对象的方法,称为 getClass 和操作 Class 对象的方法,称为 setObject。
#include <iostream>
using namespace std;
class Class {
double balance;
public:
Class();
Class(double setBalance);
void augment(double amount);
double getBalance();
};
class Class2 {
Class object2[50];
public:
Class getClass(int index){
return object2[index];
};
void setObject(int index, double balance) {
Class temp(balance);
object2[index]=temp;
};
};
Class::Class() {
balance = 0;
}
Class::Class(double setBalance){
balance=setBalance;
};
void Class::augment(double amount) {
balance+=amount;
};
double Class::getBalance() {
return balance;
};
int main() {
Class2 object;
object.setObject(5, 546);
cout << object.getClass(5).getBalance();
object.getClass(5).augment(546);
cout << object.getClass(5).getBalance();
return 0;
}
问题
如果您遵循main 中的过程,我将尝试使用balance 初始化Class 对象并通过augment 方法操作balance。看起来这段代码应该可以工作,如果直接访问对象而不是嵌套在Class2 中,它确实可以工作,但这不是一个选项。我认为这与Class 对象在Class2 中返回的方式有关,但我无法弄清楚。
【问题讨论】:
-
您正在使用隐式复制操作,因此您的代码正在创建
Class实例的副本,修改其状态(即balance),然后丢弃结果。而是使用指向单个Class实例的指针或引用。 -
具体来说你应该有一个
Class& getClass(int);和const Class& getClass(int) const; -
@Dai 这总是的问题...但是当我进行更改以尝试返回 Class 作为参考时,我得到了很多 red .
-
@cltco
const Class& getClass(int) const;能为我做什么? -
“红色”是什么意思?如果您收到编译器错误消息,请发布它们,而不是模糊和不具体。
标签: c++ function class object methods