2013-02-13 2 views
1

본질적으로 파일 수준 정적이 구조체라고 가정하여 작성된 많은 코드가 있습니다. 따라서 모든 참조는 struct.member과 같습니다.동적으로 할당 된 객체에 대한 참조 ("at run-time")

이 코드를 변경하고 정적 구조체 *으로 만들고이 구조체를 런타임에 할당해야했습니다.

나는 참조를 구조체 & 심판을 만들고 싶었 = * myStatic 내가 게으른 및 struct-> 회원struct.member의 톤을 변경하지 않는 한.

그러나 참조는 선언 될 때 초기화해야하며 (맞습니까?) 참조 만하면 런타임에 참조 할 수 있습니다. 이것이 가능한가?

그들이 때

+3

그냥 변경하십시오. 미래의 코더 (자신을 포함하여!)는 그렇게하지 않은 것에 대해 당신을 싫어할 수 있습니다. – GManNickG

+1

GManNickG의 말에 따르면 편집기에는 찾기/바꾸기 기능을위한 내장 매크로가있을 것입니다. – AndyG

+0

:) 그렇습니다. 모든 것을 시도하기 전에 직접 프로토 타입을 증명하려고했습니다. – chrisd

답변

1

"를 참조 초기화 할 필요가 (경우에 내가하지 리터럴의 C++ 구조체 키워드로, 내 실제 구조체 이름 대신 단어 구조체를 사용하고 있습니다 .. 혼란) 재 선언 "

기준이 만들어 질 때 시점 있어야로 초기화된다 참조하는 오브젝트 [1]이 존재하는 경우 (오른쪽?)

MyStruct* s = new MyStruct; 
MyStruct& ref = *s; 
01,

이 형식은 MyStruct의 개체에 동적으로 메모리를 할당 한 다음이 개체를 구성하고 결국이 개체에 대한 참조 ref을 만듭니다. s의 평생 동안주의를 기울이는 한 완벽하게 좋습니다. s이있는 메모리가 할당 해제되면 참조가 무효화됩니다.

참조를 사용할지 또는 사용하지 않을지 결정하는 경우 .->으로 바꾸는 것에 대한 게으른 느낌을 기반으로해서는 안됩니다.


[1] 03 C++ 8.3.2 §4 표준 : "A 기준은 유효한 오브젝트 또는 함수를 참조로 초기화되어야한다."

관련 문제