我正在尝试修改方法中的布尔字段。该方法接受一个指针bool指针,但似乎无法弄清楚如何正确执行此操作。
这是我想做的类似事情的基本示例:
class WarningManager {
bool seenWarningA;
void updateWarnings() {
pushWarning(&seenWarningA)
}
void pushWarning(bool ** warning) {
**warning = true;
}
}
此代码示例错误(发送bool *,但必须为bool **),我尝试了其他方法,但没有运气。找不到任何在线示例,但也许我在搜索错误的术语。什么是正确的方法?
答案 0 :(得分:1)
您似乎正在尝试将bool *的参数传递给需要bool **的函数。从参数列表中删除一层间接层,或在传递的值中添加一层。这两种方法都应该起作用。
答案 1 :(得分:1)
两个错误:
首先,您对bool**
的声明带有类型为bool*
的参数,并且您正尝试发送using namespace std;
class WarningManager {
public:
bool seenWarningA;
void updateWarnings() {
pushWarning(seenWarningA);
}
void pushWarning(bool &warning) { // You can simply use refference instead of pointer to pointer, or pointer at all..
warning = true;
}
};
int main()
{
WarningManager w;
w.seenWarningA = false;
w.updateWarnings();
cout << w.seenWarningA; // Prints 1
return 0;
}
。
第二-您可以简单地使用引用:
{{1}}
答案 2 :(得分:1)
因为有一个类,所以不需要任何参数。
class WarningManager {
bool seenWarningA;
void updateWarnings() {
pushWarning()
}
void pushWarning() {
seenWarningA = true;
}
}
使用引用而不是指针更优雅。
class WarningManager {
bool seenWarningA;
void updateWarnings() {
pushWarning(seenWarningA)
}
void pushWarning(bool & warning) {
warning = true;
}
}
如果要使用指针,&运算符只给出单个指针而不是双点:
class WarningManager {
bool seenWarningA;
void updateWarnings() {
pushWarning(&seenWarningA)
}
void pushWarning(bool * warning) {
*warning = true;
}
}