클래스 생성자의 초기화 목록을 통해 참조 객체를 초기화하려고하는데 다음과 같은 방법으로 초기화 할 수없는 이유에 대한 입력이 필요합니다. 다음과 같은 방법으로 참조를 초기화 할 수 없습니까?C++ 참조 변수 초기화 목록
class ObjectA
{
private:
char* _nameA;
int _velocityA;
public:
ObjectA(char* name, int velocity)
{
name = name;
_velocityA = velocity;
}
};
내가 말한다 다음 초기화 목록에 오류가 유형의 참조 유형의 값으로 초기화 할 수 없습니다 (const를 지 않은) "ObjectA &" "문자 *" 이유는 정확히 내가 오전 이 오류가 발생합니까? 내가 뭘 잘못하고 있니?
class ObjectB
{
private:
ObjectA& objA;
public:
ObjectB(char* engName, int _velocityA):objA(engName, _velocityA)
{
}
};
왜 참조입니까? – kennytm
'ObjectA'가 아니고'ObjectA '가 아니라면'objA (ObjectA (engName, _velocityA))'를 사용해야하지만'objA'는 참조이므로 참조하지 말아야합니다. RValue. – PeterT
이미 ObjectA에 char *가 클래스 외부에있는 일부 개체를 가리키는 멤버를 가지고 있기 때문에 나중에 ObjectA 인스턴스가 자체 포함되지 않으므로 문제가 발생할 수 있습니다. –