5

你能让一个未命名的结构成为一个类的静态成员吗​​?

struct Foo
{
    struct namedStruct
    {
        int memb1, memb2;
    };
    static namedStruct namedStructObj;
    struct
    {
        int memb1, memb2;
    } unnamedStructObj;
};

Foo::namedStruct Foo::namedStructObj;
// The unnamed type doesn't seem to have a type you can write
4

2 回答 2

10

是的,有可能:

struct Foo
{
    struct
    {
        int memb1, memb2;
    } static unnamedStructObj;
};

decltype(Foo::unnamedStructObj) Foo::unnamedStructObj;

在这里,由于您没有任何方法可以引用未命名的结构,因此使用decltype(Foo::unnamedStructObj)可以检索 的类型Foo::unnamedStructObj,因此您可以编写定义。

于 2018-02-10T14:43:07.400 回答
5

您可以在以下帮助下做到这一点decltype()

struct Foo
{
    struct namedStruct
    {
        int memb1, memb2;
    };
    static namedStruct namedStructObj;
    static struct
    {
        int memb1, memb2;
    } unnamedStructObj;
};

Foo::namedStruct Foo::namedStructObj;
decltype(Foo::unnamedStructObj) Foo::unnamedStructObj;
于 2018-02-10T14:43:07.877 回答