【问题标题】:static CArray C++ MFC [duplicate]静态 CArray C++ MFC [重复]
【发布时间】:2021-11-19 00:32:10
【问题描述】:

我似乎无法制作静态 CArray 并使用它。

这是我的代码:

class WhiteBoard
{
public:

    static CArray<WhiteBoard, WhiteBoard> test;

    void tester()
    {
        test.Add(*this);
    }
};

在调用测试器方法时,我得到一个未解析的外部符号。 完整的错误代码是:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2001 unresolved external symbol "public: static class CArray<class WhiteBoard,class WhiteBoard> WhiteBoard::test" (?test@WhiteBoard@@2V?$CArray@VWhiteBoard@@V1@@@A) MFCApplication2 C:\Users\sw.eng\source\repos\MFCApplication2\MFCApplication2Dlg.obj 1   

这是我第一次使用 CArray,但我弄乱了 int 的 CArray 并且一切正常。

可能是我试图在 WhiteBoard 中添加一个 CArray WhiteBoard 吗? (我确实需要这个功能来跟踪制作的所有子对象,这就是我这样做的原因)

删除 static 关键字会使一切运行。但它不是静态成员,我需要它是一个。

无论如何,所有帮助都将令人难以置信,非常感谢。

编辑 1:

我开设了另一个课程,我称之为 BoardBoss。 WhiteBoard 继承了 BoardBoss。 CArray 现在是 BoardBoss 类型。 CArray 测试;

问题仍然存在。

【问题讨论】:

标签: c++ mfc


【解决方案1】:

需要定义静态类成员。正如所发布的,WhiteBoard 类仅声明标识符test。这让编译器很高兴,但是链接器失败了,因为它在使用时找不到引用的符号。

要解决此问题,您需要将以下内容添加到编译单元:

CArray<WhiteBoard, WhiteBoard> Whiteboard::test;

【讨论】:

    猜你喜欢
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多