2017-07-17 5 views
0

Ich teste das Konzept, Klassen zum ersten Mal in separate Dateien zu setzen und dabei einen Fehler zu bekommen. Bitte helfenWas wird dieses C++ Programm nicht ausgeführt?

main.cpp das ist die Hauptdatei

#include <iostream> 
    #include <string> 
    #include "newClass.h" 
    using namespace std; 

    int main() 
    { 
     newClass obj1("mayan"); 
     cout << obj1.doneName() << endl ; 


    } 

NewClass.h dies ist die separate Header-Datei

#ifndef NEWCLASS_H 
#define NEWCLASS_H 

#include <iostream> 
#include <string> 
#include <string> 
class newClass{ 

private: 
    string name; 

public: 
    newClass(string z) ; 

    string doneName(); 

}; 


#endif // NEWCLASS_H 

und dies ist die separate newClass.cpp Datei

#include "newClass.h" 
#include <iostream> 
#include <string> 

using namespace std; 
newClass::newClass(string z) 
{ 
    name = z ; 
} 

string newClass :: doneName() 
{ 
    return name; 
} 
+0

Es führt nicht viele Dinge aus. Aber meinst du, es wird nicht kompiliert oder nicht verlinkt oder nicht ausgeführt, wie du es willst? – Tas

+0

In der Header-Datei ändern Sie 'string' in' std :: string' –

+0

ich meine es zeigt einen Fehler. –

Antwort

2

Sie benötigen mehr über C++ und seine compilation zu lesen. Lesen Sie mehr über die linker.

Beachten Sie, dass eine C++ - Quelldatei eine translation unit und in der Regel includes einige Header-Dateien ist. Lesen Sie mehr über die preprocessor.

Sie verwenden besser std::string nicht nur string in einer Headerdatei (weil using std; in Headerdateien verpönt ist).

Vergessen Sie nicht, alle Warnungen und Debug-Informationen zu ermöglichen, beim Kompilieren. Mit GCC kompilieren Sie mit g++ -Wall -Wextra -g.

In der Praxis verwenden Sie besser ein Werkzeug build automation wie GNU make, wenn Sie ein Projekt mit mehreren Übersetzungseinheiten erstellen.

Denken Sie daran, dass IDE s nur glorifiziert sind source code editors in der Lage, externe Tools wie Build-Automatisierungstools, Compiler, Debugger, Versionskontrollsysteme usw. zu verwenden. Sie werden diese Tools in der Befehlszeile besser verwenden können.

+0

Danke Basile, es hat funktioniert. –

Verwandte Themen