000
27.09.2006, 12:58 Uhr
Yadgar
|
High!
MemoryBlock ist eine Klasse für char-formatierte Speicherbereiche:
C++: |
class MemoryBlock { public: /* diverse Methoden */ static int upper_limit; static void setLimit(int);
protected: int mSize; // Größe des Speicherbereiches char* mWert; // Zeiger auf Speicherbereich };
|
Von MemoryBlock erbt TypedMemoryBlock protected:
C++: |
class TypedMemoryBlock : protected MemoryBlock { public: /*diverse Methoden*/ private /*diverse Hilfsmethoden, aber keine Datenmitglieder, da schon in MemoryBlock enthalten */
};
|
Schließlich erbt wiederum FixedArray von TypedMemoryBlock, diesmal public:
C++: |
class FixedArray : public TypedMemoryBlock { public: /* jede Menge Funktionen */ private: static int upper_limit; // obere Grenze für Dimension eines FixedArray-Objektes, // wird mittels statischer Funktion setLimit gesetzt };
|
FixedArray hat (unter anderem) einen Allgemeinen Konstruktor:
C++: |
FixedArray::FixedArray(int aD) : TypedMemoryBlock(aD) { if (aD < 0 || aD > upper_limit) { if (aD > upper_limit) { cerr << "Gew" << (char)132 << "hlte Feldgr" << (char)148 << (char)225 << "e zu hoch!" << endl; } if (aD < 0) { cerr << "Felder k" << (char)148 << "nnen keine negative Dimension haben!" << endl; } cerr << "W" << (char)132 << "hlen Sie bitte einen Wert zwischen 0 und " << upper_limit << "." << endl; exit (1); } mWert = new(nothrow) reinterpret_cast<char*>(int[aD]); if (mWert==0) { cerr << "konnte " << mDim << " Elemente nicht allokieren!" << endl; exit(1); } }
|
Jetzt sollte ja eigentlich dieser Konstruktor MemoryBlock::mWert verwenden können, da es in FixedArray entsprechend der Vererbungsregeln protected ist.
Wieso bekomme ich dann für die Zeile mWert = new(nothrow) reinterpret_cast<char*>(int[aD]);
die Fehlermeldungen expected identifier before "reinterpret_cast" und expected `;' before "reinterpret_cast" ?
Bis bald im Khyberspace!
Yadgar -- Flagmaker - ein Programmier-Blog |