클래스의 변수 인 객체에 액세스하는 데 문제가 있습니다. 다음과 같이 상속 관계는 같습니다클래스 변수에 대한 액세스
#include "X.h"
class Y
{
X object;
public:
X & getObject();
};
그런 다음 다른 파일/클래스 :
#include "Y.h"
class Z : public Y
{
X object2;
public:
X & getObject2();
};
그리고 객체에 대한 포인터의 벡터를 가지고 마지막 클래스입니다. 내가 object
변수에 접근하려면
#include "Z.h"
class XYZ
{
vector<Y*> cont; //contains objects of class type Z and Y
};
, 단순히
cont[index]->getObject();
쓰기 그러나 object2
에 접근 할 수있는 방법이 없다, 컴파일러는 심지어 getObject2()
과 같은 방법을 볼 수 없습니다 . 나는 나의 설명이 명확하지 않다고 생각하지만, 어쨌든 나는 당신이 나를 도울 것을 희망한다.
다른 모든 것들을 제외하고 멤버 변수에 대한 비 const 참조를 전달하는 것은 나쁜 생각입니다. 왜냐하면 클래스가 내부 상태에 대한 제어를 잃어 버렸기 때문입니다. * 제어가 객체 지향 소프트웨어를 작성하는 전체 개념입니다. 첫 번째 장소. – DevSolar
getObject2는 파생 클래스의 함수이며 부모 클래스에 대한 포인터를 저장합니다. 솔루션은 http://www.learncpp.com/cpp-tutorial/121-pointers-and-references-to-the-base-class-of-derived-objects/를 참조하십시오. – Chiel
@Chiel 코드의 주석은 벡터에 * both * 유형의 객체가 있음을 분명하게 설명합니다. – davmac