"abstract" Klassenhirarchie
-
Hallo,
Ich möchte eine Klassenhirarchie die aus abstrakten (zum Teil auch "pure virtual" Klassen) besteht aufbauen. Bekomme jetzt schon bei einem recht einfachen Aufbau einen Compile Error.
Es gibt eine "pure virtual" Basisklasse
/*! Time-stamp: <@(#)OSTCameraModel.h 07.05.2004 - 13:34:53 Gerd Keller> ********************************************************************* * @file : OSTCameraModel.h * * Project : * * Package : * * Company : * * Author : Gerd Keller Date: 07.05.2004 * * Purpose : Declaration of class * ********************************************************************* * Version History: * * V 0.10 07.05.2004 BN : First Revision * ********************************************************************* */ #include "cv.h" #if !defined(AFX_OSTCAMERAMODEL_H__25EF4061_F7EE_4F79_A78E_83C8200A5787__INCLUDED_) #define AFX_OSTCAMERAMODEL_H__25EF4061_F7EE_4F79_A78E_83C8200A5787__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 /*! CLASS OSTCameraModel This class provides the interface for the Camera Model USAGE <More detailed description of the class and a summary of it's (public) operations>. */ class OSTCameraModel { public: // { CvMat* a; return a; } virtual CvMat* getP() = 0; virtual void sett( double Tx, double Ty, double Tz ) = 0; virtual void setR( double Rx, double Ry, double Rz ) = 0; virtual void setA( double f, double nf, double Cx, double Cy ) = 0; //virtual OSTCameraModel* clone() const = 0; OSTCameraModel() {} virtual ~OSTCameraModel() {} // virtual OSTCameraModel( const OSTCameraModel &rhs ) = 0; }; #endif // !defined(AFX_OSTCAMERAMODEL_H__25EF4061_F7EE_4F79_A78E_83C8200A5787__INCLUDED_)und eine abgeleitete "abstrakte" Klasse
// OSTRadialDistCameraModel.h: Schnittstelle für die Klasse OSTRadialDistCameraModel. // ////////////////////////////////////////////////////////////////////// #include "cv.h" #if !defined(AFX_OSTRadialDistCameraModel_H__74EB2398_30A0_4F71_A901_5016889E8C19__INCLUDED_) #define AFX_OSTRadialDistCameraModel_H__74EB2398_30A0_4F71_A901_5016889E8C19__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "OSTRadialDistCameraModel.h" class OSTRadialDistCameraModel : public OSTCameraModel { public: CvPoint unDistort( CvPoint aPoint ); void calcP(); OSTRadialDistCameraModel(); virtual ~OSTRadialDistCameraModel(); CvMat* getP(); void sett( double Tx, double Ty, double Tz ); void setR( double Rx, double Ry, double Rz ); void setA( double f, double nf, double Cx, double Cy ); private: double radialDist; CvMat* A; CvMat* R; CvMat* t; CvMat* P; }; #endif // !defined(AFX_OSTRadialDistCameraModel_H__74EB2398_30A0_4F71_A901_5016889E8C19__INCLUDED_)der Compile error ist:
--------------------Konfiguration: OSTStaticLib - Win32 Debug--------------------
Kompilierung läuft...
OSTRadialDistCameraModel.cpp
c:\programme\microsoft visual studio\myprojects\transfer\opticalstereotracking\oststaticlib\ostradialdistcameramodel.h(17) : error C2504: 'OSTCameraModel' : Basisklasse undefiniert
Fehler beim Ausführen von cl.exe.
Browse-Informationsdatei wird erstellt...OSTStaticLibD.lib - 1 Fehler, 0 Warnung(en)
Kann man überhaupt in C++ hirarchien aus abstrakten Klassen bilden?
Was mache ich falsch?MFG@gerd
-
Doch, kann man. Solltest du aber nicht besser #include "OSTCameraModel.h" statt #include "OSTRadialDistCameraModel.h" schreiben?
-
besten dank Tag,
Ja der #include war es !
-* doofer Fehler
Die Compile error message schickt eine auch in die falsche Richtung
MFG@gerd