ďťż

Ładny brzuch

W pliku nagłówkowym mam deklaracje klasy, której składowymi są łańcuchy znakowe. Jeśli chcę zrobić np. coś takiego: class klasa{ string mojstring; int i; //(..) };

to wyrzuca mi błąd, że nie wie co znaczy string (czy jakoś tak). O ile pisząc w czystym c++ wystarczyło, że do pliku nagłówkowego dodałem #include <string> i było ok, ale już pisząc w builderze 6 [pod windows] nie jest tak łatwo. Nawet jak dodam <string>.... Co mam zrobić? Jaki plik dodać? Nie chcę dodawać całej bilbioteki VCL i chcę mieć deklaracje klasy w pliku nagłówkowym.
Z góry dziękuje...



zrob tak
#include <string>
using namespace std;
powinno dzialac
mozesz teraz deklarowac zmienne typu string

a makrodefinicja by ni wystarczyła?

No tak, ale użycie usingn namespace std; w pliku nagłówkowym może być niebezpieczne - przynajmniej tak twierdzi p. Bruce Eckel. Teraz się spieszę, ale w okolicach g. 13 mogę to poprzeć cytatem.... Podejrzewam, że rozwiązanie będzie raczej proste, ale.... No właśnie, trzeba mieć pomysł ;)...



#include <string> //... class klasa{   std::string mojstring;   int i;   //(..) };

A nie lepiej byłoby użyć typu AnsiString?

zeby uzyc AnsiString trzeba includowac vcl a on tego nie chcial robic.

Dzięki - pomogła metoda autorstwa pepsi. Czyli z dodaniem std:: przed stringa. Mam nadzieje, że jest to poprawne i bezpieczne :D.


zeby uzyc AnsiString trzeba includowac vcl a on tego nie chcial robic.

Aha - jeszcze mam jedno pytanie: "co zrobić, żeby funkcja mogła zwrócić tablicę stringów?"
Piszę tak:
string[5] zwroc(string s[5])
i wyrzuca mi błąd: "Declaration syntax error".
I co ja mam teraz 'biedny, nieszczęśliwy' zrobić? :) :unsure:

Np. /nie znam dobrze c++/

#include <iostream> #include <stdio.h> #include <conio.h> #include <string> using namespace std; typedef string stringi; stringi dodajstringi(string s1, string s2) { return s1+s2; } int main() { string nazwa; nazwa = dodajstringi("1","2"); cout << nazwa << endl; getch(); }

Tak, ale z tego, co się doczytałem, to funkcja zwróci jeden string - wynik dodawanie 2 stringów: return s1+s2;
A mi chodzi o to, żeby mi zwróciła cała tablicę znaków. W każdym razie dzięki za dobre chęci... :)

Gapa <_< ale zaraz coś wymyślę/znajd ;)


Aha - jeszcze mam jedno pytanie: "co zrobić, żeby funkcja mogła zwrócić tablicę stringów?"
Piszę tak:
string[5] zwroc(string s[5])
i wyrzuca mi błąd: "Declaration syntax error".
I co ja mam teraz 'biedny, nieszczęśliwy' zrobić? :) :unsure:

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •