gpt4 book ai didi

c++ - 错误 : passing 'const …' as 'this' argument of '…' discards qualifiers

转载 作者:IT老高 更新时间:2023-10-28 21:43:48 27 4
gpt4 key购买 nike

error: passing 'const A' as 'this' argument of 'void A::hi()' discardsqualifiers [-fpermissive]

我不明白为什么会出现这个错误,我没有返回任何东西,只是传递了对象的引用,就是这样。

#include <iostream>

class A
{
public:
void hi()
{
std::cout << "hi." << std::endl;
}
};

class B
{
public:
void receive(const A& a) {
a.hi();
}
};

class C
{
public:
void receive(const A& a) {
B b;
b.receive(a);
}
};

int main(int argc, char ** argv)
{
A a;
C c;
c.receive(a);

return 0;
}

@edit

我使用 const 正确性修复了它,但现在我试图在同一个方法中调用方法,我得到了同样的错误,但奇怪的是我没有传递对这个方法的引用。

#include <iostream>

class A
{
public:
void sayhi() const
{
hello();
world();
}

void hello()
{
std::cout << "world" << std::endl;
}

void world()
{
std::cout << "world" << std::endl;
}
};

class B
{
public:
void receive(const A& a) {
a.sayhi();
}
};

class C
{
public:
void receive(const A& a) {
B b;
b.receive(a);
}
};

int main(int argc, char ** argv)
{
A a;
C c;
c.receive(a);

return 0;
}

error: passing 'const A' as 'this' argument of 'void A::hello()'discards qualifiers [-fpermissive]

error: passing 'const A' as 'this' argument of 'void A::world()'discards qualifiers [-fpermissive]

最佳答案

您的 hi 方法未在 A 类中声明为 const。因此,编译器不能保证调用 a.hi() 不会改变你对 a 的常量引用,因此会引发错误。

您可以阅读有关常量成员函数的更多信息 here并正确使用 const 关键字 here .

关于c++ - 错误 : passing 'const …' as 'this' argument of '…' discards qualifiers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26963510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com