클래스 계층 구조를 정리하는 작업이 할당되었지만 약간의 문제가 있습니다. 쉽게 실수를 할 수있게, DerivedTwo에서클래스 계층 구조에서 변수 초기화
class Base
{
Base() = 0;
function1();
...
function5();
protected:
int variable1_;
...
int variable10_;
};
class DerivedOne
: public Base
{
DerivedOne() = 0;
function6();
...
function10();
protected:
int variable11_;
...
int variable20_;
};
class DerivedTwo
: public DerivedOne
{
DerivedTwo()
: DerivedOne()
{
... Fill variable1_ to variable25_ with data read from file ...
variable1_ = ...
}
function11();
...
function15();
private:
int variable21_;
...
int variable25_;
};
그래서 25 변수가 할당되는 그 값 : 나는 지금 대략 다음과 같다 뭔가 남아 있어요. DerivedOne에서 다른 클래스를 상속 받으면 그 사람이 변수 중 하나를 초기화하는 것을 잊어 버리게됩니다.
저는이 계층 구조를 디자인하는 여러 가지 방법을 가지고 놀았지만 실제로는 아무 느낌이 없습니다.
나는이 수업이 실제로 무엇을하는지 모른 채 구체적인 것을 말하기는 어렵지만,이 디자인에 근본적인 문제가 있는지 또는 모든 변수를 초기화하는 우아한 방법을 간과했는지 알고 싶습니다. .
핸들을 공유, 특정 기본이 아닌 생성자 이러한 클래스 중 하나 (예를 들어 파일 이름을 통과의 변수를 초기화하지 이유 또는 무엇이든) ? 그것을하지 않는 이유는 무엇입니까? –
DerivedOne에서 상속받은 다른 클래스는 파일의 값을 초기화하지 않으므로 Base 클래스가 더 일반적이어야합니다. 미안하지만, 나는 그 말을 포스트에서 언급 했어야했다. –
실제 코드를 게시 할 수 있습니까? 'Base() = 0'은 무엇입니까? 'DerivedTwo() : DerivedOne()이란 무엇입니까? 당신은'DerivedOne()'이 자동적으로 호출된다는 것을 알고 있습니까? – yngccc