Есть ли еще один эффективный способ писать код ниже, не используя статическую строковую переменную? Причина в том, что я использую приведенный ниже код, чтобы проиллюстрировать возникновение сбоя в более крупном проекте, который использует эту старую строковую переменную. Но если я удалю статическое ключевое слово, код не будет разбиваться, но содержимое строковой переменной ничего.Не использовать статическую строковую переменную
std::string conversation;
const char *GetFoo()
{
static std::string word;
word ="hello ";
word +="buddy.";
word +=" How are things?";
return word.c_str();
}
void CallGetFoo()
{
const char *pp = GetFoo();
conversation +=pp;
cout<<pp;
}
int _tmain(int argc, _TCHAR* argv[])
{
CallGetFoo();
return 0;
}
Почему бы не возвратить 'std :: string' –
Удаление' static' является ошибкой. Вы получаете неопределенное поведение. – juanchopanza
ok благодаря Ed Heal и Juanchopanza. Вместо этого я попытаюсь вернуть std :: string. Но есть и другое. Этот проект работает уже несколько лет. Он действует только на новой платформе. –