指向类成员问题的C++指针 我在C++类中遇到了这个问题。我想获取指向myBar对象的指针并将其存储在quxBar中。原因是我希望能够使用quxBar->getX检查值,但我也希望防止意外地从Qux修改它,所以我尝试使用Bar const*

指向类成员问题的C++指针 我在C++类中遇到了这个问题。我想获取指向myBar对象的指针并将其存储在quxBar中。原因是我希望能够使用quxBar->getX检查值,但我也希望防止意外地从Qux修改它,所以我尝试使用Bar const*,c++,pointers,pointer-to-member,C++,Pointers,Pointer To Member,不幸的是,它不工作,因为我仍然能够执行quxBar->setX100,没有编译错误 也许我的方法是完全错误的,但使用目前的技能:我不知道如何修复它 提前感谢您的帮助和建议。我认为这不是您的实际代码,首先是因为它有语法错误,其次是因为它实际上大部分是正确的。更具体地说,使用这段代码,quxBar->setX100;将导致编译错误 但是,quxBar->getX也将是一个编译错误,您需要告诉编译器可以在const对象上调用它,您可以通过在函数签名的末尾添加const来实现这一点: int getX(

不幸的是,它不工作,因为我仍然能够执行quxBar->setX100,没有编译错误

也许我的方法是完全错误的,但使用目前的技能:我不知道如何修复它


提前感谢您的帮助和建议。

我认为这不是您的实际代码,首先是因为它有语法错误,其次是因为它实际上大部分是正确的。更具体地说,使用这段代码,quxBar->setX100;将导致编译错误

但是,quxBar->getX也将是一个编译错误,您需要告诉编译器可以在const对象上调用它,您可以通过在函数签名的末尾添加const来实现这一点:

int getX() const { return x; }

也许在您的实际代码中,您使用的是Bar*const quxBar而不是Bar*const*quxBar;它们意味着两种不同的东西:前者是指向Bar的常量指针,而后者是指向常量Bar的指针。在前面的例子中,只有指针本身不能修改,但它指向的对象可以修改。

我认为这不是您的实际代码,首先是因为它有语法错误,其次是因为它实际上大部分是正确的。更具体地说,使用这段代码,quxBar->setX100;将导致编译错误

但是,quxBar->getX也将是一个编译错误,您需要告诉编译器可以在const对象上调用它,您可以通过在函数签名的末尾添加const来实现这一点:

int getX() const { return x; }

也许在您的实际代码中,您使用的是Bar*const quxBar而不是Bar*const*quxBar;它们意味着两种不同的东西:前者是指向Bar的常量指针,而后者是指向常量Bar的指针。在前面的例子中,只有指针本身不能修改,但它指向的对象可以修改。

您能至少发布实际编译的代码吗?当我修复所有明显的编译错误、不正确的分号等等时,我会遇到以下几个错误:将“const Bar”作为“int Bar::getX”的“this”参数传递会丢弃限定符。我认为是编译器的错误。你用的是什么编译器?你根本不会出错,或者只是在那一行?在类定义的末尾需要一个分号。您能至少发布实际编译的代码吗?当我修复所有明显的编译错误、不正确的分号等等时,我会遇到以下几个错误:将“const Bar”作为“int Bar::getX”的“this”参数传递会丢弃限定符。我认为是编译器的错误。你用的是什么编译器?你根本不会出错,或者只是在那一行?在类定义的末尾需要一个分号。谢谢,事实上,用Bar*const*quxBar代替Bar*const*quxBar没有任何问题。我在原始代码中使用的QList指针有一些问题。谢谢,事实上Bar*const quxBar而不是Bar*const quxBar没有任何问题。我在原始代码中使用的QList指针有一些问题。