gpt4 book ai didi

c++ - const 函数的编译器错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:09 26 4
gpt4 key购买 nike

我不确定我是否遗漏了一些基本的东西。但我无法理解为什么编译器会为此代码生成错误:

class A
{
};

class B
{
public:
B();
A* get() const;

private:
A* m_p;
};

B::B()
{
m_p = new A;
}

A* B::get() const
{
//This is compiling fine
return m_p;
}

class C
{
public:
A* get() const;
private:
A m_a;
};

A* C::get() const
{
//Compiler generates an error for this. Why?
return &m_a;
}

编辑:编译器错误是:error C2440: 'return' : cannot convert from 'const class A *' to 'class A *' Conversion looses qualifiers

最佳答案

函数签名中的

const 告诉编译器该对象的成员不能被修改。然而,您返回一个指向成员的非 const 指针,从而允许违反该 promise 。

在您的类 B 中,您没有作出/违反 promise ,因为您没有返回指向成员的指针,而是返回它的拷贝(并且该成员恰好是一个指针)。

关于c++ - const 函数的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528117/

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