c++ - 与类相关的可变变量,而不是对象
问题描述
假设我有一个简单class
的write
方法,只需要输出类属性。其中有一个名为 的可变变量counter
。每次write
调用方法时,计数器都应递增。
问题是,counter
绑定到一个类,而不是特定对象。如果我有两个相同类型的对象,并且如果我write
在第一次调用 3 次,但在第二次调用为零,则 counter 将具有相同的值。如何解决这个问题?我猜它与构造函数有关。
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
解决方案
您应该为您的类实现一个构造函数,用于初始化成员变量。例如
class SomeClass
{
private:
double x;
mutable int counter;
public:
SomeClass()
: x(0),
counter(0)
{
}
...
};
另外,write()
应该counter
在返回之前增加,所以
double write()
{
++counter;
return x;
}
推荐阅读
- blockchain - 无法在本地以太坊区块链中添加对等点
- python - 如何优化抓取动态加载的网站?
- oracle - sql中隐式游标的行数
- angular - 如何在 mat tooltip angular 中添加静态文本和动态变量?
- google-bigquery - Google Data Studio - 使 COUNT_DISTINCT 作用于整个数据而不是饼图中的特定类别
- android - Firebase 数据库规则关于
- winapi - WTSVirtualChannelOpen在C#中调用错误调用,getLastWin32Error()返回错误调用6,windows的invalid_invalid_handle
- sql - 如何生成序列号以在 Sql Server 行中不断变化
- c++ - 无法在 C++ 中将击键写入记事本
- python - 如何在模板中请求 GET 参数以获取文件列表?(Django Zip 文件下载问题)