c ++静态类成员的前向声明

art*_*hur 6 c++ forward-declaration

我有一堂课:

class M {
public:
    static std::string t[];
};
Run Code Online (Sandbox Code Playgroud)

稍后进行初始化。我想稍后在不同的类(头文件)中使用 M::t:

class Use {
public:
    void f() { std::cout << M::t[0] << std::endl; }
};
Run Code Online (Sandbox Code Playgroud)

有没有办法在不包含 Use 的头文件的整个类 M 的情况下实现这一点?我知道前向声明不允许访问类成员,但是这种美是静态的,因此对于编译器来说应该不是一个大问题。

Luc*_*ore 6

不,你不能。您可以在头Use::f文件中包含M头文件,也可以将实现文件分开并在那里包含头文件。