【发布时间】:2017-04-07 20:07:41
【问题描述】:
我是 C++ 新手,我正在尝试了解 Class 的工作原理。当我遇到这个问题时,我为自己做了一个简单的例子。我的班级有一个私有财产num,我正在尝试以这种方式用int初始化它:Number one = Number::ONE;,但它不起作用。但是,当我这样做时,它工作正常:Number one; one = Number::ONE。我更喜欢第一个选项。请帮忙!
这是我的完整代码:
class Number {
public:
enum {ONE, TWO, THREE, FOUR};
Number();
void print() const;
Number& operator=(int);
private:
int num;
};
Number& Number::operator=(int n) {
num = n;
return *this;
}
int main(int argc, const char * argv[]) {
Number n = Number::ONE; // doesn't work :(
n.print();
return 0;
}
Number::Number() {
num = 0;
}
void Number::print() const {
cout << num << endl;
}
【问题讨论】:
-
您不需要为您正在做的事情重载赋值运算符吗?只需制作一个 mutator 函数。
-
int changeNum (enum x) { 返回你的枚举 }
标签: c++ initialization assignment-operator