Неинтегрированные члены типа (включая string
и ваши пользовательские типы) необходимо инициализировать вне определения класса, в одном файле реализации (обычно .cc
или .cpp
).
В вашем случае, поскольку вы не отделили определение класса в заголовке, вы можете инициализировать static
s сразу после вашего класса:
class A {
public:
static const int i = 9;
static const int PI = 1.3;
static const char ch = 's';
static const string str;
static const QString str2;
};
const string A::str = "hello world";
const QString A::str2 = "hello world";
РЕДАКТИРОВАТЬ: Кроме того, как указал Навазout, заголовочный файл, который определяет string
, равен <string>
, а не <cstring>
.