【问题标题】:Can an unnamed struct be made static?可以将未命名的结构设为静态吗?
【发布时间】:2018-02-10 14:38:32
【问题描述】:

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

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

【问题讨论】:

    标签: c++ static unnamed-class


    【解决方案1】:

    是的,有可能:

    struct Foo
    {
        struct
        {
            int memb1, memb2;
        } static unnamedStructObj;
    };
    
    decltype(Foo::unnamedStructObj) Foo::unnamedStructObj;
    

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

    【讨论】:

    • 那个 decltype 太有用了。
    【解决方案2】:

    你可以在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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多