вернуть массив статических символов, используя ссылку

Теперь я хочу написать новую версию следующего кода:

const char * f() {
return "Hello";
}
const char *pf = f();

Интересно как пользоваться reference вместо pointer,

У меня есть одна идея, используя string,

Есть ли более прямой способ решить эту проблему?

ОБНОВИТЬ:

Я внимательно прочитал ответ и комментарии. я получил другая идея это рассматривать возвращаемое значение как константный массив. Но это решение кажется слишком сложным и не таким ясным, как указатель.

1

Решение

Если вы хотите знать синтаксис, то определение будет выглядеть следующим образом

#include <iostream>

const char ( & ( f() ) )[6] { return ( "Hello" ); }

int main()
{
std::cout << f() << std::endl;
}

Или, как советует @ Jarod42, вы можете использовать typedef, чтобы определение функции выглядело проще

#include <iostream>

const char ( & ( f() ) )[6] { return ( "Hello" ); }

typedef const char ( &Array_Ref )[6];
Array_Ref g() { return ( "Hello" ); }

int main()
{
std::cout << f() << std::endl;
std::cout << g() << std::endl;

Array_Ref s = g();
std::cout << s << std::endl;
}

Если вы хотите использовать std :: string, то было бы лучше написать функцию как

std::string f() { return ( "Hello" ); }
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector