Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Strings in Klassen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
01.11.2005, 02:46 Uhr
Noob2k5



Hab mir in einer seperaten Headerdatei eine Test-Klasse angelegt, in dieser Klasse würd ich gern mit Strings arbeiten, was mir aber nicht so ganz gelingt.

Der Compiler spuckt mir immer aus "string does not name a type" und "string has not been declared"

Mein Code der Test-Klasse sieht so aus:

C++:
#ifndef Mitarbeiter_H
#define Mitarbeiter_H

#include<string>



class Mitarbeiter{
    private:int id;
            string vorname;
            string nachname;
            string adresse;

    public: Mitarbeiter();
            ~Mitarbeiter();
            //Setter-Methoden
            void SetVorname(string vn);
            void SetNachname(string nn);
            void SetAdresse(string addy);

            //Getter-Methoden
            string GetVorname();
            string GetNachname();
            string GetAdresse();

};

Mitarbeiter::Mitarbeiter(){
    //Nothing
}

Mitarbeiter::~Mitarbeiter(){
    //Nothing
}

void Mitarbeiter::SetVorname(String vn){
    vorname = vn;
}

void Mitarbeiter::SetNachname(String nn){
    nachname = nn;
}

void Mitarbeiter::SetAdresse(String addy){
    adresse = addy;
}

String Mitarbeiter::GetVorname(){
    return vorname;
}

String Mitarbeiter::GetNachname(){
    return nachname;
}

String Mitarbeiter::GetAdresse(){
    return adresse;
}

#endif



Wieso frisst der Compiler meine strings nicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.11.2005, 06:52 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
string liegt(wie alles was mit dem Standard zu tun hat) im Namensraum std.
Das heisst,entweder sagst du dem Compiler dass er generell den Namensraum std benutzen soll,

C++:
#include<iostream>
#include <string>
//usw..
using namespace std;


oder du qualifizierst deine Datentypen explizit mit dem Namensraum.

C++:
std::string meinString;


In ner Headerdatei würde ich die zweite Variante empfehlen weil du dadurch keine "voreiligen" Festlegungen bezüglich des Namensraumes machst,die eventuell garnicht im Sinne des Benutzers deiner Klasse sind.

Du kannst mit using auch einzelne Symbole eines Namensraumes unter ihrem "Kurznamen" ansprechbar machen.
z.B.

C++:
using std::cout;
using std::endl;


Jetzt könntest du mit cout und endl arbeiten ohne diese zu qualifizieren.
alles andere,z.B. cin müsstest du aber nach wie vor mit std:: qualifizieren.
Du kannst dich ja mal über Namensräume schlau machen aber für den Anfang reicht es eigentlich das zu wissen was ich hier kurz abgerissen habe.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 01.11.2005 um 06:53 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.11.2005, 14:35 Uhr
Noob2k5



Danke, jetzt gehts.

Hab mir mal Visual Studio 2005 ausgeliehen und dann meinen Source da reingesetzt, beim compilieren ist mir da aber alles um die Ohren geflogen.

Visual Studio wirft u.a folgende Fehler aus.

cdokumente und einstellungen\besitzer\eigene dateien\visual studio 2005\projects\mitarbeiterverwaltung\mitarbeiterverwaltung\mitarbeiter.h(9) : error C2146: syntax error : missing ';' before identifier 'nachname'
cdokumente und einstellungen\besitzer\eigene dateien\visual studio 2005\projects\mitarbeiterverwaltung\mitarbeiterverwaltung\mitarbeiter.h(9) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
cdokumente und einstellungen\besitzer\eigene dateien\visual studio 2005\projects\mitarbeiterverwaltung\mitarbeiterverwaltung\mitarbeiter.h(10) : error C2653: 'std' : is not a class or namespace name
cdokumente und einstellungen\besitzer\eigene dateien\visual studio 2005\projects\mitarbeiterverwaltung\mitarbeiterverwaltung\mitarbeiter.h(10) : error C2146: syntax error : missing ';' before identifier 'adresse'

Zudem kann er "precompiled" Headerfiles nicht finden, z.B. "Debug/Test.pch" - was sind pch für daten?

I'm confused

Dieser Post wurde am 01.11.2005 um 14:59 Uhr von Noob2k5 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.11.2005, 18:35 Uhr
mischa
Fragender



Zitat von Verfasser:

void Mitarbeiter::SetVorname(String vn){
vorname = vn;
}


1.string schreibt man klein
2.std:: vor jeden "string" setzen

als ich das gemacht habe hat der code funktioniert
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.11.2005, 10:58 Uhr
~Noob2k5
Gast



C++:
#include <iostream>

#include"stdafx.h"

int main(int argc, char *argv[])
{
    std::cout<<"Hello World";

        return 0;


}




Dieser Code lässt sich in Visual auch nicht compilieren....gibts irgendwelche Einstellungen die ich machen muss bevor visual arbeitet wie jedes andere tool auch?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.11.2005, 11:26 Uhr
ao

(Operator)



Zitat von ~Noob2k5:
Dieser Code lässt sich in Visual auch nicht compilieren....

<Gebetsmühle an>
Bitte poste die Fehlermeldung(en)!
<Gebetsmühle aus>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.11.2005, 11:38 Uhr
~Noob2k5
Gast


Sry, hier ist sie:

Zitat:

cDokumente und Einstellungen\t.horsmann\Eigene Dateien\Visual Studio Projects\test\test.cpp(13): fatal error C1083: vorkompilierte Headerdatei-Datei kann nicht geöffnet werden: 'Debug/test.pch': No such file or directory
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.11.2005, 12:02 Uhr
Tommix



Hallo,
ich kenne nur VC6, aber da muß man beim ersten mal das Projekt erstellen (nicht nur den Quelltext compilieren). Falls es daran nicht liegt, wirf mal das #include "stdafx.h" raus.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
02.11.2005, 13:19 Uhr
Noob2k5




Zitat von Tommix:
Hallo,
ich kenne nur VC6, aber da muß man beim ersten mal das Projekt erstellen (nicht nur den Quelltext compilieren). Falls es daran nicht liegt, wirf mal das #include "stdafx.h" raus.

Gruß, Tommix


Projekt ist erstellt, werfe ich die #include stdafx.h raus meckert er das ihm irgendwelche headerfiles fehlen würden und fragt in der Fehlermeldung nach ob ich vergessen habe die stdafx.h zu includieren.

Ganz nebenbei, die stdafx.h ist leer, besteht nur aus kommentarzeilen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
02.11.2005, 13:42 Uhr
Tommix




Zitat von Noob2k5:

Projekt ist erstellt,

Erstellt ist es, wenn kein Fehler mehr kommt. Ich meine nicht das Anlegen des Projektes sondern das Erstellen der Exe. Bei VC6 z.B. durch "Erstellen / Alles neu erstellen" oder auch F7.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: