Foa*_*aly 1 c++ casting reference vector
我在向bool引用转换char引用时遇到问题.我有一个简单的GUI库,具有以下方法gui->addButton(string name, bool& value);.如果单击该按钮,则会翻转bool.现在我想拥有一个动态/未知的按钮.因此,虽然我可以创建一个bool向量,但只需为每个创建的按钮push_back一个新的bool,并为addButton方法提供对最后一个向量元素的引用.像这样的东西:
bool isOnFlag = true;
buttonFlagVector.push_back(isOnFlag);
gui->addButton(name, buttonFlagVector.back());
Run Code Online (Sandbox Code Playgroud)
可悲的是,因为bool的矢量专门化,这是行不通的.
从我读到的,避免bool专业化的常用方法是使用a std::vector<char>.我试过了,我遇到的问题是我不知道如何从char引用转换为bool引用.dynamic_cast reinterpret_cast?他们似乎都没有工作.
有人能指出我正确的方向吗?提前致谢!
小智 6
不幸的是,a的大小bool是实现定义的,并且在不同的编译器上可能不同.所以,即使一个reinterpret_cast可以工作,我会建议反对它.相反,你可以使用这样的小包装struct:
struct SpecialBool { bool b; };
std::vector<SpecialBool> bools;
Run Code Online (Sandbox Code Playgroud)
不幸的是,您的方法还有另一个问题,即您std::vector仍然在向元素添加元素的同时存储对元素的引用.在每个push_back内部存储器上可能会重新分配,这将使您以前的所有引用无效.