0
나는 X 클래스를 가지고 내 목표는 X&
을 반환하는 함수를 구현하기 위해 "나쁜 개체"를 나타내는 특별한 var를 가지는 것입니다. 예를 들어
는 :Init. 정적 멤버 COPY CTOR 동안 개인
//X.h
class X{
private:
int i;
X(const X& other){} //private COPY CTOR
public:
const static X& badObject;
X(int a) : i(a) {} // the only CTOR
const X& f(){
if(true)
//return some valid X object
else
return badObject;
};
유일한 ctor에 기본 ctor에 아니며, 복사 ctor에 개인이다 (I이 개체의 대처 허용하지 않습니다.) Operator=
는 비공개입니다.
이제 init을 시도 할 때. 복사 ctor에 개인이기 때문에
//X.cpp
#include "X.h"
const X& X::badObject = X(1);
: X.cpp에 badObject는 오류가 발생합니다.
내가 뭘 잘못하고 있니? 이 문제를 해결하려면 어떻게해야합니까?
감사합니다.
왜 'badObject'가 (무엇에 대한) 참조입니까? – Lol4t0
"const static X badObject;"시도하십시오. 선언 및 "const X X :: badObject (1);" 정의에서. –
그렇지 않다면, 'return badObject'를 수행 할 때마다 임시 객체를 생성하기 위해 CTOR가 호출되어 f()의 값에 의해 반환 될 것이고 그렇게하고 싶지 않기 때문입니다. – bomba6