【发布时间】:2014-08-10 20:35:08
【问题描述】:
我有一个父 XWin 类来封装程序的“X 调用”。一次 我打开了显示器。我将指针传递给包含所有内容的 Xwin 类 X 相关指针(资源、显示等)和所有 X 调用 通过该类的指针。
我有单独的对象将句柄传递给 XWin 类,所以 他们可以通过包装类进行图形调用。
我正在尝试将指针声明为“const”
Meter::Meter(const XWin * parent,...): parent_(parent) {}
class Meter {...
Const XWin * parent_;...}
当我使用“parent_”调用父类时遇到问题...如下所示:
parent_->setForeground(color);
用 (g++) 编译器告诉我
meter.h: In member function ‘void Meter::setForeground(uns)’:
meter.h:72:33: error: passing ‘const XWin’ as ‘this’ argument of \
‘void Xwin::setForeground(long unsigned int)’ discards qualifiers \
[-fpermissive]
{ parent_->setForeground(color); }
我如何告诉 g++,“没关系,被调用的函数没有修改“this”?
我想使用 use 'const' 作为一个明显的声明,即 this 传递的指针不会在任何地方更改。不确定在哪里放置'const'以指示指针未更改(并且不适用于 指出,因为这可能会改变)。
这可能吗?
(我在看到第一个答案后尝试添加的非工作示例:-()
注意——我在这里发布之前尝试的第一件事是将 const 放在函数名称之后和参数列表之前,因为一个答案似乎暗示了这一点。不幸的是,这似乎将 object 声明为 const 以及,或代替指向该对象的指针。我通过以下方式发现了这一点:
xwin.h: In member function ‘void XWin::done(int) const’:
xwin.h:34:38: error: assignment of member ‘XWin::done_’ in \
read-only object
void done( int val ) const { done_ = val; } ;
这给了我暗示,那个位置的 const 适用于函数,不一定适用于指针(即使它确实适用,我也不想声明对象常量——那将是“可疑的" 充其量,调用一个方法来设置一个“const 对象”?它是指向我要声明 const 的对象的指针,而不是对象。
【问题讨论】: