Ваш код
// This Works:
static char myVariable1 [ ] = "MyString1" ;
работает, потому что литеральная строка на основе char
представляет собой массив char
.Итак, вы инициализируете массив массивом.
Следующие несколько строк
// This Breaks:
static char myVariable2 [ ] = myFunc("MyString2") ; // Line #30
не работают, потому что вы инициализируете массив char
с помощью char*
указатель.Массив должен быть инициализирован с массивом.Обозначения в фигурных скобках распространены, и это то, на что ваш компилятор жалуется, что он ожидает вместо вызова функции.
Если вы хотите, чтобы некоторые глобальные строковые переменные были инициализированы вызовами функции, тогда рассмотрите возможность использования std::string
и / или одноэлементные функции.Например,
static std::string& myVariable2()
{
static std::string theString = myFunc( "MyString2" );
return theString; // Return a reference to the string instance.
}
Однако это техническое решение для плохого дизайна, поэтому я рекомендую его только как чисто техническое решение для текущей проблемы.
Вместо этого попробуйтеизбегайте глобальных переменных.
Cheers & hth.,