Я ищу простой способ создать массив строк во время компиляции. Для теста я собрал класс с именем Strings
, который имеет следующие члены:
Strings();
Strings(const Strings& that);
Strings(const char* s1);
Strings& operator=(const char* s1);
Strings& operator,(const char* s2);
Используя это, я могу успешно скомпилировать код следующим образом:
Strings s;
s="Hello","World!";
Часть s="Hello"
вызывает operator=
, который возвращает Strings&
, а затем operator,
вызывается для "World!"
.
То, что я не могу заставить работать (в MSVC, еще не пробовал другие компиляторы), это
Strings s="Hello","World!";
Я бы предположил, что Strings s="Hello"
вызовет конструктор копирования, и тогда все будет вести себя так же, как в первом примере. Но я получаю ошибку: error C2059: syntax error : 'string'
Однако, это прекрасно работает:
Strings s="Hello";
Итак, я знаю, что конструктор копирования работает хотя бы для одной строки. Есть идеи? Мне бы очень хотелось, чтобы второй метод работал, чтобы сделать код немного чище.