Я объявил статический массив const в заголовке, а затем реализовал его в файле cpp, но я не могу понять, что происходит.статическая библиотека: static const array - LNK2001: неразрешенный внешний символ в приложении с использованием библиотеки
Subsys.h:
#ifndef _SUBSYS_H
#define _SUBSYS_H
namespace Engines
{
namespace Particles
{
class SubSys : public ISubSys
{
private:
static const int _M[ 3 ];
...
//rest of class
};
}
}
#endif
Subsys.cpp:
#include "Subsys.h"
namespace Engines
{
namespace Particles
{
const int SubSys::_M[ 3 ] =
{
0x80,
0x7f,
0x01
};
}
}
ошибка LNK2001: неразрешенный внешний символ "частные статические ИНТ константные * константные Двигатели :: Particles :: Subsys :: _ М" (? _M @ SubSys @ Particles @ Engines @@ 0QBIB)
Если я реализую массив в заголовке вне класса, я не получаю ошибку LNK2001 в приложении, используя статическую библиотеку. Я получаю LNK4006 при компиляции статической библиотеки (т. Е. Символ, добавленный более одного раза).
Я также удалил пространства имен в .cpp-файле и использовал полное имя Engines :: Particles :: SubSys :: _ M. Такая же проблема возникает.