一个未命名的结构可以变成静态的吗?

时间:2018-02-10 14:38:33

标签: c++ static unnamed-class

你能将一个未命名的struct作为类的静态成员吗​​?

List<Integer> nextLine = 
    Arrays.stream(inputLine.split(" "))
          .map(Integer::valueOf)
          .collect(Collectors.toList());

2 个答案:

答案 0 :(得分:6)

是的,可能:

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

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

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

答案 1 :(得分:4)

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