Problem mit #include (Error LNK1120)
-
Ich hab hier einen (bestimmt dummen) Fehler gemacht und finde ihn nicht:
Database.h
//Database #include <string> #include <vector> #include <iostream> using namespace std; struct Entry { int id; char* value; }; struct Category { int id, entryCount; char* name; vector<Entry> entries; }; class Database { private: vector<Category> data; unsigned int catCount; public: Database(); int createNewCategory(char* name, int&buf); int createNewEntry(int categoryID, char* value, int&buf); int getEntry(int categoryID, int entryID, char*&buf); };Database.cpp
#include "Database.h" Database::Database() { catCount = 0; } int Database::createNewCategory(char* name, int&buf) { Category c; c.name = name; c.id = catCount++; c.entryCount = 0; catCount++; buf = c.id; return 0; } int Database::createNewEntry(int categoryID, char* _value, int&buf) { for (vector<Category>::iterator it = data.begin(); it != data.end(); it++) { if (it->id == categoryID) { Entry entry; entry.id = it->entryCount; entry.value = _value; it->entries.push_back(entry); it->entryCount++; return 0; } } cout << "ERROR:\tCATEGORY WAS NOT FOUND." << endl; return -1; } int Database::getEntry(int categoryID, int entryID, char*&buf) { for (vector<Category>::iterator it1 = data.begin(); it1 != data.end(); it1++) { if (it1->id == categoryID) { for (vector<Entry>::iterator it2 = it1->entries.begin(); it2 != it1->entries.end(); it2++) { if (it2->id == entryID) { buf = it2->value; return 0; } } cout << "ERROR:\tENTRY WAS NOT FOUND." << endl; return -1; } } cout << "ERROR:\tCATEGORY WAS NOT FOUND." << endl; return -1; }main.cpp
#include "Database.h" using namespace std; int main() { Database database; int catID; database.createNewCategory("people", catID); int entryID; database.createNewEntry(catID, "ICH!", entryID); char* val; database.getEntry(catID, entryID, val); cout << val << endl; system("pause"); return 0; }
-
Fehlermeldungen bitte vollständig angeben. Für C++-Code, bitte auch die C++-Codetags benutzen ([code="cpp"]...[/code]).
Der Fehler ist ein Linkerfehler, der Code wird also fehlerfrei übersetzt. Sind alle Quelldateien im gleichen Projekt und werden auch übersetzt?
-
SeppJ schrieb:
Fehlermeldungen bitte vollständig angeben. Für C++-Code, bitte auch die C++-Codetags benutzen ([code="cpp"]...[/code]).
Der Fehler ist ein Linkerfehler, der Code wird also fehlerfrei übersetzt. Sind alle Quelldateien im gleichen Projekt und werden auch übersetzt?
Hab alles nochmal überprüft und den Fehler behoben, danke für die schnelle Antwort

-
Shedex schrieb:
Hab alles nochmal überprüft und den Fehler behoben, danke für die schnelle Antwort

Wäre trotzdem sinnvoll wenn du den Fehler hier nochmal postest und kurz beschreibst, wie du ihn behoben hast. Vielleicht kannst du damit anderen helfen, die etwas ähnliches übersehen haben.
Finnegan
-
int Database::createNewCategory(char* name, int&buf) { Category c; c.name = name; c.id = catCount++; c.entryCount = 0; catCount++; buf = c.id; return 0; }@Shedex: Ist Dir der Fehler hier schon aufgefallen? Das Object 'c' lebt nur während dem Methodenaufruf, da dieses Objekt auf dem Stack liegt. Und zweimal 'catCount++' ist vermutlich auch nicht Deine Absicht - nehme ich an.