【发布时间】:2015-03-02 14:50:49
【问题描述】:
我在将 char 引用转换为 bool 引用时遇到问题。我有一个简单的 GUI 库,它具有以下方法 gui->addButton(string name, bool& value);。如果单击按钮,则翻转布尔值。现在我想要一个动态/未知数量的按钮。因此,尽管我可以创建一个布尔向量,但只需为创建的每个按钮 push_back 一个新的布尔值,并为 addButton 方法提供对最后一个向量元素的引用。像这样的:
bool isOnFlag = true;
buttonFlagVector.push_back(isOnFlag);
gui->addButton(name, buttonFlagVector.back());
很遗憾,因为specialization of vector for bools,这不起作用。
从我读到的避免布尔特化的常用方法是使用std::vector<char>。我试过了,我遇到的问题是我不知道如何从 char 引用转换为 bool 引用。 dynamic_castreinterpret_cast?它们似乎都不起作用。
有人能指出我正确的方向吗?提前致谢!
【问题讨论】:
-
你能显示不起作用的代码吗?
-
“不起作用”是什么意思?编译器错误、运行时错误、意外的程序行为?
-
我认为你应该这样做
reinterpret_cast<bool&>(buttonFlagVector.back()) -
@Giulio:很清楚,但 Foaly 也指出,来自 std::vector
的演员表不起作用,链接未涵盖
标签: c++ vector casting reference