erstes prog mit Klassen,und direkt Fehler...
-
wieso bekomme ich denn jetzt hier nur Fehlermeldungen ? habs genauso ausm Buch abgetippt;
// Implementierung der Zeilen // Zeile1.cpp #include <stdio.h> #include <string.h> #include <stdlib.h> #include "Zeile1.hpp" Zeile::Zeile (char * text); { Laenge = strlen (text) +1 // Laenge merken Inhalt = new char[Laenge];//Speicher holen if (Inhalt == NULL) exit(1); strcpy (Inhalt,text); // Inhalt kopieren } Zeile::~~Zeile() { delete Inhalt; } void Zeile::print() { printf (Inhalt);
// Klasse mit dynamischer Speicherverwaltung // Zeile1.hpp class Zeile { int Laenge; char * Inhalt; public: Zeile (char * ctext); ~Zeile(); void print(); };
// Hauptprogramm für zeile // z1main.cpp #include <stdio.h> #include "Zeile1.hpp" int main() { Zeile z1("\nGuten Tag!\n"; z1.print(); // Inhalt ausgeben return 0; }
-
Klasse MyString, die die "Großen Drei" (Copy-Konstruktor, Zuweisungsoperator, Destruktor) in Aktion zeigt:
#include <iostream> #include <iomanip> #include <conio.h> #include <cstring> class MyString { public: MyString(char* pText=NULL); MyString(const MyString& str); // Copy-Konstruktor MyString& operator=(const MyString& str); // Zuweisungsoperator ~MyString(); void output(); void showaddress(); private: char* pText_; }; MyString::MyString(char* pText) { if (pText) { pText_ = new char[ strlen(pText+1) ]; strcpy(pText_, pText); } else { pText_ = new char[1]; *pText_='\0'; } } MyString::MyString(const MyString& str) // Copy-Konstruktor { pText_ = new char[ strlen(str.pText_+1) ]; strcpy(pText_, str.pText_); } MyString& MyString::operator=(const MyString& str) // Zuweisungsoperator { pText_ = new char[ strlen(str.pText_+1) ]; strcpy(pText_, str.pText_); return *this; // Unterschied zum Copy-Konstruktor } inline MyString::~MyString() { delete[] pText_; } void MyString::output() { std::cout << pText_ << std::endl; } void MyString::showaddress() { std::cout << std::endl << std::hex << int(pText_) << ": "; } int main() { MyString str1("hello, world"); MyString str2(str1); // Copy-Konstruktor MyString str3; str3 = str2; // Zuweisungsoperator MyString str4(""); MyString str5; str1.showaddress(); str1.output(); str2.showaddress(); str2.output(); str3.showaddress(); str3.output(); str4.showaddress(); str4.output(); str5.showaddress(); str5.output(); getch(); }
-
#include <stdio.h> #include "Zeile1.hpp" int main() { Zeile z1("\nGuten Tag!\n"); //schließende Klammer fehlte... z1.print(); return 0; }
Liegt es vielleicht daran?
-
Zum Experimentieren (incl. Vererbung):
#include <string> #include <iostream> void wait() // die C++-Alternative von getch() ;) { std::cin.clear(); std::streambuf* pbuf = std::cin.rdbuf(); std::streamsize size = pbuf->in_avail(); std::cin.ignore(size); std::cin.get(); } class Person { private: std::string Vorname; std::string Name; unsigned int Alter; public: ~Person(); Person(); void setVorname(const std::string& value); const std::string& getVorname() const; void setName(const std::string& value); const std::string& getName() const; void setAlter(const unsigned int & value); const unsigned int & getAlter() const; }; const unsigned int & Person::getAlter() const { return Alter; } void Person::setAlter(const unsigned int & value) { Alter = value; } const std::string& Person::getName() const { return Name; } void Person::setName(const std::string& value) { Name = value; } const std::string& Person::getVorname() const { return Vorname; } void Person::setVorname(const std::string& value) { Vorname = value; } Person::Person(){} Person::~Person(){} class Dozent : public Person { private: unsigned int Kurse_noch_geplant; unsigned int Kurse_gehalten; public: void setKurse_noch_geplant(const unsigned int & value); const unsigned int& getKurse_noch_geplant() const; void setKurse_gehalten(const unsigned int & value); const unsigned int& getKurse_gehalten() const; ~Dozent(); Dozent(); }; Dozent::Dozent() : Kurse_gehalten(0), Kurse_noch_geplant(0) {} Dozent::~Dozent(){} const unsigned int & Dozent::getKurse_gehalten() const { return Kurse_gehalten; } void Dozent::setKurse_gehalten(const unsigned int & value) { Kurse_gehalten = value; } const unsigned int & Dozent::getKurse_noch_geplant() const { return Kurse_noch_geplant; } void Dozent::setKurse_noch_geplant(const unsigned int & value) { Kurse_noch_geplant = value; } int main() { Dozent obj; obj.setName("Allwissend"); obj.setVorname("Hugo"); obj.setAlter(85); obj.setKurse_gehalten(13); obj.setKurse_noch_geplant(2); std::cout << obj.getVorname() << " " << obj.getName() << " " << obj.getAlter() << " Jahre alt" << std::endl; std::cout << obj.getKurse_gehalten() << " Kurse schon gehalten." << std::endl; std::cout << obj.getKurse_noch_geplant() << " Kurse noch geplant." << std::endl; wait(); }