在需要访问私有结构的 .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 B
在 class A
之外是未知的,因此必须在全局范围内将其引用为 A::B
因此,要声明 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 B
在 class A
之外是未知的,因此必须在全局范围内将其引用为 A::B