0

我在这个问题上被困了几天,即使谷歌回复了很多,我也找不到我的问题的答案,这似乎是一个相当抽象的问题。

这是我在 H 中的代码:

struct DISPLAYLINE_t {
         char  *text;
         bool isWhite;
         void set(char *txt, bool iswhite){text = txt; isWhite = iswhite;};
};

struct DISPLAY {   
    static DISPLAYLINE_t line1,line2,line3,line4; 
    void clear(){//dostuff};
};

当我尝试从我的 Main 访问时:

DISPLAY::line1.set(string, FALSE);

我收到以下错误:

错误 LNK2019:未解析的外部符号“公共:静态结构 DISPLAYLINE_t DISPLAY::line1”(?line1@DISPLAY@@2UDISPLAYLINE_t@@A) 在 WinMain 函数中引用

有任何想法吗?

4

1 回答 1

3

您必须在全局命名空间范围内为您的静态数据成员提供定义(至少对于您在代码中使用 odr 的那些):

DISPLAYLINE_t DISPLAY::line1;
DISPLAYLINE_t DISPLAY::line2;
DISPLAYLINE_t DISPLAY::line3;
DISPLAYLINE_t DISPLAY::line4;

这个活生生的例子展示了你应该如何修复你的程序。

于 2013-04-04T13:34:36.963 回答