我有一个存储数组的类,我需要编写一个方法来返回指向该数组的指针,以便其他对象可以访问/修改它。
在我的程序的旧版本中,我通过以 C 风格定义数组来做到这一点。即,拥有一个私有元素bool* list
,然后在构造函数中分配内存(并在析构函数中释放它)。当时的方法很简单:
bool* MyClass::getList() {
return list;
}
现在,我决定重写代码并使用std::vector<bool>
而不是经典数组。问题是我也将上述方法修改为:
bool* MyClass::getList() {
return &(list[0]);
}
这似乎是将 C++ 向量转换为 C 数组的标准方法。但是,我无法编译我的代码,我收到以下错误:
error: taking address of temporary [-fpermissive]
error: cannot convert ‘std::vector<bool>::reference* {aka std::_Bit_reference*}’ to ‘bool*’ in return
谁能帮我解决这个问题并告诉我该怎么办?
(我还读到另一种选择是list.data()
用作指针,但这仅适用于最新版本的 C++ 编译器。我不确定这是否是个好主意)。
谢谢,