在需要访问私有结构的 .cpp 文件中定义静态成员

Defining a static member in .cpp file which requires access to private struct

因此,要声明 class 的静态成员,需要在 .cpp 文件中定义该成员,以避免出现未解决的外部链接器错误。我的问题是我的静态成员需要一个私有结构的定义,它在 .cpp 文件中对我的静态成员不可用。

    //foo.h
    class A
    {
    public:
        ...
    private:
        struct B
        {
            ...
        };

        class C
        {
        public:
            ...
        private:
            static std::vector<std::shared_ptr<B>> someVector;
        } D;
    };

您应该像这样在 cpp 文件中声明向量:

std::vector<std::shared_ptr<A::B>> A::C::someVector;

struct Bclass A 之外是未知的,因此必须在全局范围内将其引用为 A::B