아래 코드를 참조하십시오. 이 코드에서는 참조로 test.c_str()
에 의해 반환 된 const char*
을 저장하고 있습니다. 제 질문은 - data
은 test
의 내용을 올바르게 참조합니까? 나는 test.c_str()
에 의해 반환 된 ptr이 임시로 될 것이라고 생각하고 있는데, 참조에 바인딩하면 유효하지 않을 것입니다.임시로 참조에 포인터 바인딩하기
내 생각이 맞습니까? StoringClass이
class StoringClass
{
const char*& data;
public:
StoringClass (const char*& input): data(input)
{
}
}
EDIT1:
은 그냥 수 std 무엇을 : : 문자열이하고있는 생각하지 말자입니다
class RefPtrTest
{
std::string test;
StoringClass storingClass;
public:
RefPtrTest(): test("hello"), storingClass(test.c_str())
{
}
}
. 내가
class RefPtrTest
{
const mystring test;
StoringClass storingClass;
public:
RefPtrTest(): test("hello"), storingClass(test.getInternalPointer())
{
}
}
getInternalPointer
직접 내부 포인터를 반환을 mystring에라는 내 자신의 클래스를 사용하고 가정하자. 나는이 가설을 검증하기를 원한다. test.getInternalPointer()
에 의해 반환 된 ptr은 일시적 일 것이고 나는 그것을 참조로 묶는다면 유효하지 않을 것이다. 내 생각이 맞습니까?
EDIT2:
StoringClass가 내 통제하에 있지 않습니다. 기본적으로 템플릿 클래스는 형식에 대한 참조를 저장합니다. const char*
에 사용 중입니다. 나는 당신이 제기 한 모든 디자인 문제를 알고 있습니다. 하지만 그 클래스를 변경할 수는 없으므로 const char *
에 사용해야합니다. 그 주위에는 다른 방법이 없습니다.
왜 포인터 복사본 대신 포인터에 대한 참조를 저장하려고하는지 알 수 없습니다. – pmr