class IFeature
{
public:
virtual std::string string() = 0;
};
class Feature2D
{
public:
virtual std::string string() { .... }
};
class Feature3D
{
public:
virtual std::string string() { .... }
};
void print(std::vector<IFeature*> & v)
{
for (size_t i=0; i<v.size(); i++)
std::cout << v[i]->string() << std::endl;
}
void main()
{
std::vector<Feature2D*> v2d;
// push...
print(v2d); // compile error
std::vector<Feature3D*> v3d;
// push...
print(v3d); // compile error
}
이 인쇄 기능을 어떻게 얻을 수 있습니까? (아마도 std :: vector와 다른 다른 데이터 구조를 사용합니다)C++에서 상속 된 객체의 벡터
감사합니다.
벡터를 const 참조에 의해'print' 할 수 있습니다. 또한 상속 문이'FeatureXD' 클래스 선언에 없습니다. –
@Stefan - 질문에 게시 된 코드를 수정하지 마십시오. 모든 오류는 OP가보고있는 문제의 ** 원인 ** 일 수 있습니다. – ChrisF
예, 물론, 제가 생각한 것은 무엇입니까 :) –