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

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

本文关键字:结构 静态成员 访问 文件 cpp 定义      更新时间:2023-10-16

因此,要声明类的静态成员,需要在.cpp文件中定义该成员,以避免无法解析的外部链接错误。我的问题是,我的静态成员需要一个私有结构的定义,这将不可用于我的静态成员在。cpp文件。

    //foo.h
    class A
    {
    public:
        ...
    private:
        struct B
        {
            ...
        };
        class C
        {
        public:
            ...
        private:
            static std::vector<std::shared_ptr<B>> someVector;
        } D;
    };

您应该在cpp文件中这样声明vector:

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

struct Bclass A之外是未知的,因此必须在全局作用域中引用为A::B