如何使用const值初始化const对象的非const属性?

时间:2016-08-27 02:07:47

标签: c++ c++11

我需要实例化我的类的const对象,并从const指针初始化其成员指针。那可能吗?怎么做?

我有类似的东西:

class A:
    public Base
{
public:
    A():
        v(nullptr)
    {}

    virtual void f() override
    {}

private:
    my_type *v;

    friend void f(const my_type& orig)
    {
        // How to create a "const A" with "v == &orig" ?
    }
};

1 个答案:

答案 0 :(得分:2)

对象本身是否是常量以及它的任何类成员是否是常量,是两个完全独立的主题。

是否可以以特定方式初始化类的成员并不取决于该类的特定实例是否是常量。

指向常量对象的指针不能用于初始化指向非常量对象的指针。你的班级成员:

my_type *v;

是指向非常量对象的指针(假设my_type本身不是常量类型)。

因此,无法初始化此指针以指向常量对象。

包含此成员的类的某个实例是否是常量,不是一个因素。