undefined reference to
-
ach so und html_file is meine klasse hab ich im header drin
-
Ist die komplette Klasse im Header oder ist sie verteilt auf Header und cpp-Datei?
-
_matze schrieb:
Ist die komplette Klasse im Header oder ist sie verteilt auf Header und cpp-Datei?
verteilt
wenn ich nun in meine cpumain.cpp #include "cpu.cpp" rein schreibe kommt dieser fehler hier:
/home/praktikant/kernelstat/cpu2.cpp: In Funktion »void add_verbatim(std::istream&)«:
/home/praktikant/kernelstat/cpu2.cpp:8:5: Fehler: »data« wurde in diesem Gültigkeitsbereich nicht definiert
/home/praktikant/kernelstat/cpu2.cpp: In Funktion »void add_text(const char*)«:
-
also wenn ich das richtig entnommen habe hier:
http://www.c-plusplus.net/forum/301348-fulldann fehlt mir da was in der cmakelist.txt richtig?
-
*.cpp werden nicht includiert.
übersetzte die beiden cpp-dateien in einem g++ aufruf.informier dich über übersetzungseinheiten, beispielsweise bei volkard
(ignoriere hier jedoch das void main... nicht standard)
-
Enno schrieb:
dann fehlt mir da was in der cmakelist.txt richtig?
Was steht denn in deiner cmakelist.txt? Meine Kristallkugel ist gerade in der Werkstatt.
-
cmake_minimum_required(VERSION 2.8.7) project(CPU) set(CPU_VERSION_MAJOR 1) set(CPU_VERSION_MINOR 0) add_executable(CPU cpumain.cpp)und meine header:
#ifndef CPU_H #define CPU_H class HTML_File { private: std::string data; public: void add_verbatim(std::istream& in); void add_text(const char *in); std::string to_string(); }; #endif
-
Enno schrieb:
add_executable(CPU cpumain.cpp)
Was ist denn cpumain.cpp? Die hast du vorher nicht erwähnt.
Wie auch immer, in diese runde Klammer müssen alle .cpp-Dateien, die zum Programm gehören.
-
Da fehlt übrigens ein #include <string> in deinem Header über der Klassendefinition.
Schau mal in ein Grundlagenbuch über C++ deiner Wahl nach, wie das mit der getrennten Übersetzung und der ODR (one definition rule) funktioniert.
-
ups entschuldige
ich hab meine datei eben umbenannt zu besseren übersichthab nun:
cpumain.cpp
cpu.h
cpu.cppd.h. nun muss ich die cpu.cpp auch da mit rein machen? also
add_executable(CPU cpumain.cpp, cpu.cpp)???
-
Enno schrieb:
d.h. nun muss ich die cpu.cpp auch da mit rein machen? also
add_executable(CPU cpumain.cpp, cpu.cpp)???Ja sicher! ...wobei da glaub'ich kein Komma hinkommt.
-
yeah das hat geholfen

kommt das nächste problem:
/home/praktikant/kernelstat/cpu.cpp: In Funktion »void add_verbatim(std::istream&)«: /home/praktikant/kernelstat/cpu.cpp:8:5: Fehler: »data« wurde in diesem Gültigkeitsbereich nicht definierthab auch schon probiert das std::string data; in public mit rein zu hauen geht auch nicht
class HTML_File { private: std::string data; public: void add_verbatim(std::istream& in); void add_text(const char *in); std::string to_string(); };#include <fstream> #include <iostream> #include <ostream> #include <string> #include "cpu.h" void add_verbatim(std::istream& in) { data += "<pre>"; char c; while(in.get(c)) if (c == '<') data += "<"; else if (c == '>') data += ">"; else data += c; data += "</pre>"; } void add_text(const char *in) { data += in; } std::string to_string(){ std::string out = "<!DOCTYPE html>\n<html><body>" + data + "</body></html>\n"; return out; }oder muss ich hier nochmal
char dataeinfügen?
-
void HTML_File::add_verbatim(std::istream& in) { ...
-
wow danke

nur wie mach ich es heir mit?
std::string to_string(){schreib ich HTML_File davor bekomm ich ein fehler
-
ok bin dumm xD hat sich erledigt