005
10.02.2004, 23:25 Uhr
virtual
Sexiest Bit alive (Operator)
|
Zitat: |
Blacknator postete Hallo erstmal, ich habe folgendes Problem. Ich erzeuge eine Klasse mit mehreren Elementen, bilde nach der Klasse ein Objekt mit dem Container deque. Nun will ich mit push_back() in meine Klasse schreiben, weiß aber nicht genau wie. Zur besseren verständlichkeit schreibe ich mal einen beispiel Code.
C++: |
#include <deque> #include <string>
using namespace std;
class Database { private: int _number; string _name; public: bool setNumber( int number ); bool setName( string name ); };
bool Database::setNumber( int number ) { _number = number; return true; }
bool Database::setName( string name ) { _name = name; return true; }
int main() { deque<Database> db; // ob Contaier deque, vector oder list ist egal db.push_back(db.setNumber(1)); // Hier liegt das Problem :cry: return true; }
|
Bearbeitung von Pablo: |
Bitte, cpp tags selber benutzen
|
|
Ich verstehe den Code hinsichtlich des Sinns nicht. Deshalb übersetze ich ihn mal in Umgangsprache: Database ist eine Klasse mit den Attributen name und Number, die man auch über entsprechende Methoden setzen kann. Diese Methoden geben ein bool zurück. Soweit klar.
db ein eine Queue von Database Objekten. Auch klar. mir db.push_back kann man nun normalerweise ein solches Database Objekt am Ende der Queu hinzufügen. Du rufst aber mit db.setNumber(1) zunächst mal eine Methode für db auf, welches ja eine deque ist. Im ANSI Standard gibt es einen solche Methode nicht. Ich kann mir nur vorstellen, daß Du eigentlich von einem Database Objekt diese Methode aufrufen möchtest, aber das ist weit und breit nicht in Sicht. Und wenn dem so wäre, dann hättest Du deshalb probleme, weil setNumber ein bool und kein Database Object zurückgibt.
Du kannst in db nur Database Objekte reintun, also zB:
C++: |
Database a_database; db.push_back(a_database);
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |