c++ 是否可以在私有内部类中使用静态constexpr字段?

ffscu2ro  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(74)

我有一个C14项目,不能使用C17内联变量。

// myclass.h
class MyClass {
  struct Inner {
    using StringArray = std::array<const char*, 1>;
    static constexpr StringArray kStrings{{ "foo" }};
  }
}

//myclass.cpp
constexpr MyClass::Inner::StringArray kStrings;
//                 ^^^^^                   
// Error: "Inner" is a private member of "MyClass"

有没有可能让它在C14中工作,或者只能在C17中工作?

lo8azlld

lo8azlld1#

您试图给予一个新的文件作用域变量::kStrings。您想定义静态成员MyClass::Inner::kStrings

constexpr MyClass::Inner::StringArray MyClass::Inner::kStrings;

相关问题