设为首页 加入收藏

TOP

C++静态成员链接时 "unresolved external symbol " : static "
2015-11-21 01:17:02 来源: 作者: 【 】 浏览:3
Tags:静态 成员 链接 " unresolved external symbol static

Why are classes with static data members getting linker errors?


Because static data members must be explicitly defined in exactly one compilation unit. If you didn't do this, you'll probably get an "undefined external" linker error. For example:

// Fred.h

class Fred {
public:
? ...
private:
? static int j_;?? // Declares static data member Fred::j_
? ...
};
The linker will holler at you ("Fred::j_ is not defined") unless you define (as opposed to merely declare) Fred::j_ in (exactly) one of your source files:
// Fred.cpp

#include "Fred.h"

int Fred::j_ = some_expression_eva luating_to_an_int;

// Alternatively, if you wish to use the implicit 0 value for static ints:
// int Fred::j_;
The usual place to define static data members of class Fred is file Fred.cpp (or Fred.C or whatever source file extension you use).

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 1160 FatMouse's Speed 下一篇CF 23E(Tree-树-背包合并)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: