/////////////////////////////////////////////////////////// // Softwarebauelemente II, Aufgabe O3.2 // // author: Stephan Brumme // last changes: May 29, 2001 #if !defined(AFX_BASICCLASS_H__C0EA0EA0_0BD2_11D5_9BB7_B22A84F06321__INCLUDED_) #define AFX_BASICCLASS_H__C0EA0EA0_0BD2_11D5_9BB7_B22A84F06321__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include #include using namespace std; class CBasicClass { public: CBasicClass() {}; virtual ~CBasicClass() {}; // show attributes virtual string Show() const = 0; // shows all internal attributes virtual string ShowDebug() const = 0; // return class name virtual string ClassnameOf() const = 0; // copy constructors // non-virtual // CBasicClass& operator = (const CBasicClass &myclass); // virtual virtual bool Copy (const CBasicClass *pClass) = 0; // compare two dates // non-virtual // bool operator ==(const CBasicClass &myclass) const; // virtual virtual bool EqualValue(const CBasicClass *pClass) const = 0; // compare the address of two objects bool Equal(const CBasicClass *pClass) const { return (this == pClass); }; // determine whether object contains valid data virtual bool ClassInvariant() const = 0; }; #endif // !defined(AFX_BASICCLASS_H__C0EA0EA0_0BD2_11D5_9BB7_B22A84F06321__INCLUDED_)