jke*_*eys 2 c++ const copy-constructor
我有两个吸气成员:
Node* prev() { return prev_; }
int value() { return value_ }
Run Code Online (Sandbox Code Playgroud)
请注意缺少const标识符(我忘了它们,但现在我想知道为什么这不起作用).我想把它编译成:
Node(Node const& other) : prev_(other.prev()), value_(other.value()) { }
Run Code Online (Sandbox Code Playgroud)
编译器拒绝这一点.我认为C++允许在函数参数中进行非const到const转换,例如:
{
Foo(int bar);
}
Foo(const int bar)
{
//lala
}
Run Code Online (Sandbox Code Playgroud)
为什么它不允许我用复制构造函数做同样的事情?const标识符意味着我保证不会改变任何东西,那么为什么我从const或非const源获取我的值呢?
Jar*_*Par 14
你不是试图进行非const到const的转换.您试图调用两个不是const的const方法(调用prev和value).const语义严格禁止这种类型的操作.
你可以做的是直接使用字段prev_和value_.因为它是相同类型的成员,所以您可以访问const对象上可用的私有.