void*
포인터를 초기화하기 위해 this
을 사용하는 클래스가 있습니다. 하지만 문제는 그 클래스 값을으로 전달하면 포인터가 스택의 새 주소로 변경되지 않는다는 것입니다. 그래서 복사 생성자를 오버라이드하여 this
의 새 주소로 포인터를 재 할당하려고 생각했습니다. 하지만 ... 내가 잘 설명 바랍니다C++ : 복사 생성자에 대한 질문
... 나는 일반적으로 생성자 매개 변수에 의해 얻을 슈퍼 클래스 생성자를 호출하는 변수가 필요합니다,하지만 난 내 복사 생성자에서 그들을없는
그래서 질문입니다 : 포인터를 재 할당하는 부분을 추가하는 기본 복사 생성자의 프로 시저를 유지할 수 있습니까? 아니면 더 나은 대안이 있습니까? 다른
class GetsCopiedByValue : public SuperClass
{
GetsCopiedByValue(Type1 *t1, Type2 *t2, float var1, /* A lot of other things I need */) :
SuperClass(t1, t2), var1(var1)
{
t1->set_GetsCopiedByValue_Address(this); // ***
}
}
어딘가에 :
덕분에 여기
는 일부 코드{
GetsCopiedByValue instance (t1, t2, 4.64, /* All the other things */);
SomeType *t = new SomeType(instance); // <-- here, it gets copied by value,
} // but the original "instance" goes (here) out of scope and the address
// I assigned (***) is not longer valid, so I have to
// reassign the address to the new address, after copying it.
코드 예제를 게시 할 수 있습니까? 코드가 지금 어떤 모습입니까? – jalf
일부 코드를 게시하십시오. 그리고 무효 *를 사용하는 경우, 아마 잘못했을 가능성이 큽니다. –
"void * 포인터를 초기화 할 때 클래스를 사용합니다." 코드를 제공하면 좋을 것입니다. 어쨌든 왜 왜 무효 *가 필요합니까? – SigTerm