기본 클래스 Shape
및 기타 파생 클래스 Circle
, Square
및 Triangle
이 있습니다. 3 개의 기본 클래스 포인터 벡터를 만들었습니다.C++에서 개체의 입력 배열 정렬
vector < Shape * > shapes(3);
shapes[ 0 ] = &C1; //Circle C1;
shapes[ 1 ] = &S1; //Square S1;
shapes[ 2 ] = &T1; //Triangle T1;
그 후, 가상 함수 draw()
for (size_t i = 0; i < shapes.size(); ++i) {
cout << endl;
virtualViaPointer(shapes[ i ]);
}
void virtualViaPointer(const Shape * const baseClassPtr)
{
baseClassPtr->draw();
}
각 파생 클래스 각 도형의 면적을 계산하고 결과를 반환하는 함수 getArea()
를 갖고 호출 것이라고 virtualViaPointer()
에게 전화 loop
사용.
이제 vector
을 사용하고 getArea()
함수를 호출하여 영역을 정렬하려고합니다. 어떻게해야합니까? 예를 들어, 내 정렬 함수는 sortShape(Array, numShape)
과 같아야합니다. Array
은 생성 된 셰이프를 가리키는 Shape
포인터의 배열입니다.
어떤 도움 사용자 정의 분류 기준, 예를 들어 함께
이 멋진하지만 또한 현대 컴파일러가 있어야한다는 사실을 명심해야합니다. – Kos
람다 함수를 사용하는 것은 C++ 11에서만 지원된다는 사실을 밝히는 것이 좋습니다. – betabandido