清启牧 发表于 2022-8-11 18:56:27

如何在嵌套结构体外声明被嵌套的结构体变量

struct Object{
    enum class Type : uint8_t {
    Unknown = 0,
    apple = 1,
    banana = 2,
    orange = 3,
};

Type type;
};

using ObjectPtr1 = shared_ptr<Object>;

int main()
{
    ObjectPtr1 object_ptr1;

    return 0;
}

如上,我想在类外声明一个Type类型的变量,应该如何声明呢?
求助各位大神
ObjectPtr1->Typetype1这样是不行的,我也不是很确定为什么不行。

dolly_yos2 发表于 2022-8-11 19:25:17

用 ::
Object::Typetype1;

人造人 发表于 2022-8-11 19:25:54

#include <cstdint>

struct Object{
    enum class Type : uint8_t {
    Unknown = 0,
    apple = 1,
    banana = 2,
    orange = 3,
};

Type type;
};

int main()
{
    Object::Type t = Object::Type::Unknown;
    t = Object::Type::apple;
    return 0;
}

清启牧 发表于 2022-8-11 19:26:34

dolly_yos2 发表于 2022-8-11 19:25
用 ::

是的,这样可以,为啥指针的方式不行额?

dolly_yos2 发表于 2022-8-12 09:43:07

清启牧 发表于 2022-8-11 19:26
是的,这样可以,为啥指针的方式不行额?

因为 Type 是一个类型,按照名称解析就是要使用 :: 来指定(其实就是一个规定)
页: [1]
查看完整版本: 如何在嵌套结构体外声明被嵌套的结构体变量