См. Приведенный ниже код. В этом коде я сохраняю const char*
, возвращенный test.c_str()
в ссылку. Мой вопрос: правильно ли будет data
со ссылкой на содержимое test
? Я думаю, что ptr, возвращаемый test.c_str()
, будет временным, и если я привяжу его к ссылке, ссылка будет недействительной.Привязка указателя к ссылке
Я считаю, что это правильно?
class RefPtrTest
{
std::string test;
StoringClass storingClass;
public:
RefPtrTest(): test("hello"), storingClass(test.c_str())
{
}
}
где StoringClass является
class StoringClass
{
const char*& data;
public:
StoringClass (const char*& input): data(input)
{
}
}
EDIT1:
Давайте просто не считаю, что StD :: строка делает. Предположим, я использую свой собственный класс под названием MyString
class RefPtrTest
{
const mystring test;
StoringClass storingClass;
public:
RefPtrTest(): test("hello"), storingClass(test.getInternalPointer())
{
}
}
getInternalPointer
непосредственно возвращает внутренний указатель. Я хочу проверить эту гипотезу, а storingClass(test.getInternalPointer())
ptr, возвращаемый test.getInternalPointer()
, будет временным, и если я привяжу его к ссылке, эта ссылка будет неверной. Правильно ли я считаю?
EDIT2:
Этот StoringClass не под моим контролем. В основном это класс шаблонов, где он хранит ссылку на тип. Я использую его для const char*
. Я знаю все проблемы дизайна, которые вы подняли. Но я не могу изменить этот класс, и я должен использовать его для const char *
. Другого пути нет.
Я не понимаю, почему вы хотите сохранить ссылку на указатель вместо копии указателя. – pmr