Теперь я хочу написать новую версию следующего кода:
const char * f() {
return "Hello";
}
const char *pf = f();
Интересно как пользоваться reference
вместо pointer
,
У меня есть одна идея, используя string
,
Есть ли более прямой способ решить эту проблему?
ОБНОВИТЬ:
Я внимательно прочитал ответ и комментарии. я получил другая идея это рассматривать возвращаемое значение как константный массив. Но это решение кажется слишком сложным и не таким ясным, как указатель.
Если вы хотите знать синтаксис, то определение будет выглядеть следующим образом
#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" ); }
Других решений пока нет …