假设我有一个简单的class
,其write
方法只需要输出类属性。其中包括一个名为counter
的可变变量。每次调用方法write
时,计数器都应递增。
问题是,counter
与某个类绑定,而不是与特定对象绑定。如果我有两个相同类型的对象,并且如果我在第一个上调用write
3次,而在第二个上调用零,则计数器将具有相同的值。怎么解决这个问题?我猜它与构造函数有关。
class SomeClass
{
double x;
mutable int counter;
public:
double write()
{
return x;
++counter;
}
int counterValue()
{
return counter;
}
};
int main()
{
SomeClass c1, c2;
c1.write();
c1.write();
c1.write();
c1.counterValue();
c2.counterValue();
return 0;
}
输出:3 3
答案 0 :(得分:0)
您应该为您的类实现一个构造函数,用于初始化成员变量。例如。
class SomeClass
{
private:
double x;
mutable int counter;
public:
SomeClass()
: x(0),
counter(0)
{
}
...
};
此外,write()
应在返回前增加counter
,所以
double write()
{
++counter;
return x;
}