我在行返回源 – > GetA();中得到以下错误
cannot convert ‘this’ pointer from ‘const class FooStruct’ to ‘class
FooStruct &’
如果我删除const关键字,它编译得很好.
class FooStruct{ int a;public: int GetA() {return a;}; int bar(const FooStruct *source);};int FooStruct::bar(const FooStruct *source){ return source->GetA();}
代码本身没有意义.它已从一些真正的代码中删除,其唯一目的是说明问题.
解决方法 正是因为这条线:return source->GetA();
在这里,您尝试在您获得的指针上执行GetA函数.如果指向的对象是const,则该函数也必须是const,因为:
> const和非const函数都可以在非const对象上执行
>只能在const对象上执行const函数.
最好将所有不修改对象状态的函数标记为const,这样它们就可以用在const对象上(例如,在接受const T&作为参数的函数中).
所以在你的情况下,该类应该如下所示:
class FooStruct{public: int GetA() const {return a;}};总结
以上是内存溢出为你收集整理的c – 带有const关键字的代码将无法编译全部内容,希望文章能够帮你解决c – 带有const关键字的代码将无法编译所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)