错误LNK2001:无法解析的外部符号“ public:static int WrappedVector :: _ N”(?_N @ WrappedVector @@ 2HA)

头文件

struct WrappedVector
{
    static int _N;
    double *_x;
};


main.cpp

const int WrappedVector::_N = 3;


我不明白怎么了

最佳答案

只需更改定义

 int WrappedVector::_N = 3; // Note no const


LIVE DEMO1

或声明

 struct WrappedVector {
    static const int _N;
        // ^^^^^
    double *_x;
 };


LIVE DEMO2

始终如一。

如果需要后一种形式(static const int),也可以直接在声明中对其进行初始化:

 struct WrappedVector {
    static const int _N = 3;
                     // ^^^
    double *_x;
 };


LIVE DEMO3

09-05 18:42