从方法修改指针指针字段

时间:2018-09-02 23:30:34

标签: c++ pointers

我正在尝试修改方法中的布尔字段。该方法接受一个指针bool指针,但似乎无法弄清楚如何正确执行此操作。

这是我想做的类似事情的基本示例:

class WarningManager {
    bool seenWarningA; 

    void updateWarnings() {
        pushWarning(&seenWarningA)
    }

    void pushWarning(bool ** warning) {
        **warning = true;
    }
} 

此代码示例错误(发送bool *,但必须为bool **),我尝试了其他方法,但没有运气。找不到任何在线示例,但也许我在搜索错误的术语。什么是正确的方法?

3 个答案:

答案 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;
}
}