【发布时间】:2014-07-29 05:18:49
【问题描述】:
我在 C++ 的一个类中有大约 20 个私有布尔值。 我希望这些可以使用(公共)功能公开访问。
是否可以将(私有)变量的名称作为参数传递给这样的函数? 例如,
void setTrue(std::string varName)
{
someFunctionToConvertStringToVariable = true;
}
另外,我认为
void setTrue(std::string varName)
{
if (varName == "boolA")
{
boolA = true;
}
else if (varName == "boolB")
{
boolB = true;
}
}
会起作用,并且可以使用switch(varName) 来减少所需的 LOC 数量。
另一种选择可能是将所有布尔值公开,然后使用调用程序中的myClass.boolA = true; 访问它们 - 我不确定这是最好的主意,但它肯定更简单,所以这是一个支持它的论点。
是否有一种普遍接受/最好的方法来做这种事情?我只是把问题设置得不好,有没有更聪明的方法来解决这个问题?也许enum of varnames 将允许检查传递的变量,但我认为这不一定会使设置布尔值更容易。
【问题讨论】:
-
你可以有一个 20 个数组,而不是 20 个私有变量,并在公共成员函数中传递索引来更改。
-
在一个班级中有 20 个私人
bools 是一种巨大的设计气味 - 这意味着您的班级设计糟糕,并且您尝试建模您正在解决的任何问题的方式都需要重新考虑. -
可能是真的,但它们适用于大约 10k 行代码,并且布尔值以
if(boolA) cout<< "silly description of whats happening now";的方式进行管理。日志文件的长度根据设置的布尔值在多个数量级上有所不同,因此如果我只想找出某个部分的问题,将 most 设置为 false 会很有帮助。 -
使它们可以从调用程序中更改对其他用户更有帮助,他们不想一遍又一遍地重新编译库,或者(更重要的是)想要更改值 mid程序,在 delta 时间段的循环中运行(即,程序在 t=30 秒时中断,前 29 秒不要发送垃圾日志)
标签: c++ private-members public-method