Я хочу иметь кеш данных, который содержит некоторые объекты, которые я могу обновить с помощью функции UpdateCache
. Однако у меня возникают проблемы с LNK2001
, за которым следует LNK1120
.
HeaderFile.h
#ifndef headerfile_included
#define headerfile_included
#include <vector>
struct MyObject {
unsigned int A;
unsigned int B;
};
class MyClass {
private:
static std::vector<MyObject> myObjectCache;
public:
static void UpdateCache ();
};
#endif
CodeFile.cpp
#include "HeaderFile.h"
void MyClass::UpdateCache () {
myObjectCache.clear();
/* Repopulate cache with new data */
}
Сообщение об ошибке, которое я получаю по ссылке:
ошибка LNK2001: неразрешенный внешний символ "" private: статический класс std :: vector> MyClass :: myObjectCache "(? MyObjectCache @ MyClass @@ 0V? $ Vector @ UMyObject @@ V? $ Allocator @ UMyObject @@@ std @@@ станд @@ A)».
фатальная ошибка LNK1120: 1 неразрешенная внешность
Мое мнение таково, что существует некоторая проблема с разбиением на заголовочный файл и файл кода, поскольку у меня были аналогичные проблемы с неправильным разбиением. Если это снова такая проблема, было бы неплохо, если бы вы могли опубликовать какое-то правило о том, что помещать в файл заголовка, а что в файл кода, поскольку это довольно запутанно.