면책 조항 절대로 이런 코드를 작성하지 마십시오. 가능한 경우 동적 객체를 사용하지 말고 필요할 때 항상 RAII을 사용하여 간단하고 예외적 인 방식으로 객체를 관리하십시오.
교체를 가진 첫번째 ...
: void main()
이후
#define void int
가 무효이며, 내 컴파일러를 거부합니다. 컴파일러가 충분히 기능을 제대로 수행하지 못하면 필요하지 않을 수도 있습니다. 나중에 정의 된 정적 변수에 삭제해야합니다 객체에 대한 포인터를 은닉하기 위해
WTF() = this;
:
함께 두 번째를 교체합니다. 이것으로 한 번에 하나의 객체 만 제어 할 수 있습니다. 그러나 미친 요구 사항을 감안할 때, 나는 그것을 사용할 수있게하는 더 좋은 방법을 생각할 수 없다. 생성자 인수가 사용 가능하다면 대신
X
의 비 정적 멤버에 숨길 수 있습니다. 인수는 이름이 없으므로 아무 것도 할 수 없습니다.
Repace와 세 번째 :. 그들은 클래스 정의 외부에 정의해야하기 때문에에서 포인터를 숨기고 우리에게 정적 변수를 제공
static Y *& WTF() {static Y * y; return y;}
그것은, 전역 또는 정적 클래스 멤버가 될 수 없습니다. 이상한 요구 사항없이
delete Y::WTF();
delete px;
, 당신이 모든 혼란을 대체 할 수 :
이제 우리는 함께 네 번째 교체 할 수
int main() {
X x;
Y y(&x);
}
모든이의 교훈은 다음과 같습니다 C의 메모리 관리 ++ 올바른 방법으로하면 아주 간단합니다. 잘못하면 잘못 처리합니다.
반대로 내가 코드를 작업 의 예를 제공하고 싶습니다 숙제 것 같은데? – hmjd
약간 미친 건축을 생각하면 저에게 숙제처럼 보입니다. 다시 태그를 추가하거나이 코드의 실제 목적이 무엇인지 설명하십시오. – Rook
또한 무엇을 시도 했습니까? 무엇이 잘못 되었습니까? 완벽한 솔루션이 구현 될 것으로 기대하는 것처럼 질문을 표현했습니다. – Rook