나는 매우 객체 지향 코드의 설계에 경험하지하고 있기 때문에, 나는 다음과 같은 질문이 : 나는 콤보 cb_GRAN이Qt는 C++ 콤보 상자의 선택에 따라 객체를 생성
21 개 형상을 나타내는 21 항목 . 에서 만든 선택에 따라 cb_GRAN 내 기하학 표면의 다른 계산을 시작하고 싶습니다. 실제로 더 많은 계산이 필요합니다 : LineEdits 등의 전환에 대한 복잡한 계산이 필요하지만 간단하게 말하십시오. 표면의 계산.)
이 문제를 해결하기 위해 Geometry를 상속 한 Geometry 클래스와 21 개의 클래스 (Geo_1, Geo_2, ... Geo_21)를 만들었습니다.
Geometry *GEO;
QVector < Geometry*> qvec_GEO
qvec_GEO << new Geo_1()<< new Geo_2()<< new Geo_3()<<...... << new Geo_21() ;
GEO = qvec_GEO[ui->cb_GRAN->currentIndex()];
GEO->calculateSurface();
- 가가 될 것이다 : 나는 또한 Geo_x 작성하고 나는 다음과 같은 아이디어를 내놓았다 표면을 계산하는 클래스
virtual void calculateSurface();
이 정의하는 가상 메서드를 doable 접근 방식을 사용하여 내 문제를 해결하거나 그렇게 할 때 문제가 발생합니까?
- 개체를 하나만 만들면 생성하는 것이 좋습니다.
"switch (currentIndex()) {case 0 : GEO = new Geo_1 (휴식), case 1 : ..."또는 이와 비슷한 것이 어떨까요? 어쩌면 어떤 기능이 있습니까? 더 나은 솔루션은 콤보 상자의 컨텐트를 전환하는 것과 같을 수 있습니다. QString을 초과하므로 항목을 다른 순서로 배치해야하는 경우 여전히 수행해야합니다. 항목이 인식되지 않으면 오류가 발생합니다. 나는 내재적 인 의미없이 indizes에 찬성하지 않습니다. Btw, 대문자로 모두 로컬 변수를 명명하는 경우는 드뭅니다. – Aziuth