【问题标题】:Static members and LNK error in C++C++ 中的静态成员和 LNK 错误
【发布时间】:2017-09-08 02:26:23
【问题描述】:

我有一个具有静态成员的类,我想在类构造函数中使用它,但代码无法编译,并且出现以下错误:

致命错误 LNK1120:1 个未解决的外部问题

错误 LNK2001:未解析的外部符号“受保护:静态类集合 A::collection”

任何帮助将不胜感激。 谢谢。

a.h:

class A
{
protected:
 static Collection<A*> collection;
};

a.cpp:

A::A() {
 A::collection.push_back(this);
}

【问题讨论】:

标签: c++ static


【解决方案1】:

你需要添加

Collection<A*> A::collection;

到您的 a.cpp 文件。

【讨论】:

    【解决方案2】:

    在您的 .cpp 中您需要添加:

    Collection<A*> A::collection;
    

    .h 只是声明在某处会有一个副本。您需要在 .cpp 中提供该副本。

    【讨论】:

      【解决方案3】:

      或者,如果您不想将该行放在 cpp 文件中,则可以使用静态方法返回对静态实例的引用...即

      class A
      {
      public:
        static Collection<A*>& collection()
        {
          static Collection<A*> singleInstance;
          return singleInstance;
        }
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多