String tut es nicht

Winner

Erfahrenes Mitglied
Hallo zusammen! Mein Probelem ist gerade, das ich eine Stringvariable nicht als Funktionsparameter deklariern kann wieso.

Das ganze soll in der Headerdatei funktionieren! Hier mal mein Auszug davon! Er nimmt es einfach nicht an!
Code:
#include <stdio.h>
#include <string>
#include <stdlib.h>
#include <iostream>  
#include <windows.h>
#include <time.h>
class XML{

	public:
	void xmlPfade(string hallo);

};


void XML::xmlPfade(string hallo){}

Was mache ich da falssch, wenn ich das selbe in der MainKlasse schreibe und vorher eine Methode schreibe die den String als Parameter hat funktioniert alles einwandfrei!

Wo ist da das Problem! Kann mir das einer sagen!

Schönen Gruß + ein sonniges WE
 
super besten dank klappt wunderbaar!

Kannst du mir erklären wieso ich das so machen muss mit std::string

Naja nur wenn du Zeit und lust hast! Aber ansonsten ist es auch gut un ich nehem es so hin!
 
In C++ kann man sog. Namespaces (Namensräume) festlegen. Alle Klassen der STL (Standard Template Library) liegen im Namensraum "std". Daher muss man entweder den Namen bei der Verwendung der Klase mit angeben ( name_des_namespace:: ... ) oder den Namensraum mit der Zeile using namespace name_des_namespace; in den globalen Namensraum einbinden. Dann kann man den Klassennamen wieder direkt ohne Prefix benutzen. Namensräume sind sehr praktisch bei verteilten Klassenbibliotheken, weil sich damit Konflikte mit gleichlautenden Klassennamen im Zielprojekt vermeiden lassen.

Gruß
MCoder
 
Vielen dank für die gute Erklärung! Aber ich hänge schon wieder ein bissel fest! Ich habe ein String Array was ich deklarier aber dann erst dynamisch erzeugen möchte wenn ich die größe für das Array weis.

Code:
std::string Ordernamen[];

	Ordernamen[]= new string Ordernamen[var1];

Wieso klappt das nicht

Ich dachte dann an eine andere möglichkeit die auch nicht funktioniert hat! Das ist total umständlich wenn man noch nict komplett in der Syntay drin ist und von vb her kommt!
Andere Vorschlag der aber auch nicht klappt ist dieser
Code:
int var1=100;
	std::string Ordernamen[var1];
hat da wer eine Lösung für
 
Das musst du so machen:
C++:
std::string *pOrdernamen;

pOrdernamen = new std::string[var1];

// ...

delete [] pOrdnernamen // Aufräumen nicht vergessen
Gruß
MCoder
 
Danke perfekt! Klappt jetzt! Aber jetzt noch mein letztes Problem für heute:

Ich schreibe meine Funktion die eine String Array als Rückgabewert haben soll!

So läuft das nicht

Code:
std::string[] XML::sucheDO(std::string suchPfad){
	

return array[];	
} //ende sucheDO

Und dann rufe ich die Methode doch so auf oder:
Code:
string tze[100];

tze[i]=sucheDO(lust);

Oder mach ich da was falsch
 
Also, ich fange mal von hinten an :)

die Zeile
C++:
tze[i]=sucheDO(lust);
klappt so nicht, da tze[i] nur ein einzelnes Element des Arrays ist, und du daher kein komplettes Array zuweisen
kannst. Hier verstehe ich nicht, was du damit erreichen willst.

Um ein Array zurückzugeben, müsstest du sowas in der Art machen:
C++:
std::string* XML::sucheDO(std::string suchPfad)
{
    std::string *array = new std::string[100];

    // ...

    return array;	
}
Irgenwann, wenn das zurückgegebene Array nicht mehr benötigt wird, sollte noch ein "delete" ausgeführt werden.

Ansonsten solltest du bei dynamischen Listen, statt mit "new" Speicher zu alloziieren, bei dem man später das Freigeben nichgt vergessen darf, lieber mit der Klasse "vector" arbeiten. Da braucht man sich nicht selber um's Speicherreservieren kümmern, was die Angelegenheit einfacher und sicherer macht. Die STL benutzt du ja sowieso schon für die string-Klasse.

Gruß
MCoder
 
Zurück