고유 한 멤버 변수가 포함 된 기본 클래스에서 파생 된 클래스가 있습니다. 캡슐화 된 클래스의 모든 것을 유지하기 위해 동일한 메소드에서이 멤버 변수를 동시에 검색하는 방법에 대한 명확한 접근법을 알아 내려고합니다. 여기에 방법이 모습입니다 (이것은 의사 코드와 아마 컴파일되지 않습니다) : 코드 번호를 호출C++ - 동일한 메서드 내에서 멤버 변수 가져 오기 및 설정?
class Base
{
virtual void MyVirtualMethod(double &output1, Object &output2)
{
// do base class stuff (does not set output1 because it does not need to)...
output2 = whatever;
}
}
class Derived
{
public:
virtual void MyVirtualMethod(double &output1, Object &output2)
{
// do derived class stuff...
m_DerivedMember = whatever;
// do more stuff...
output1 = m_DerivedMember;
output2 = whatever2;
}
private:
double m_DerivedMember;
}
코드 # 2
double output1(100); // some default value
Object output2;
base->MyVirtualMethod(output1, output2);
// do more stuff but does not actually use output1, just output2...
동안 호출 한
std::vector<DataPack> dataPack;
for each Base pointer...
{
double output1(100); // some default value
Object output2;
base->MyVirtualMethod(output1, output2);
dataPack.push_back(DataPack(output1, output2));
}
이 작품은, 그것은 단지 내게 깨끗해 보이지 않습니다. 내가 묻는 더 큰 질문은 getter와 setter와 같은 메서드를 동시에 사용하는 것이 좋은가요? 감사!
_ _ 당신은 어떤 게터가없는 "나는 나 자신을 부탁 해요 더 큰 문제는이 ... 게터와 동일한 방법과 세터를 사용하는 것이 좋습니다 여부 것 같다"/setter 함수는 샘플에 표시됩니까? –
동일한 메서드 내에서 멤버 변수를 설정하고 가져 오는 것이 좋습니다. Get 또는 Set 메서드로 레이블이 지정되어 있지 않지만 메서드 내부에서 해당 멤버 변수를 가져 와서 가져옵니다. – Andrew
그건 _state operation_ (getters/setters와는 관계없는 것)이라고하는 것입니다. 그러한 것을 허용하지 않으면, OOP의 전체 개념은 꽤 쓸모 없을 것입니다. –