funkcja zwracająca typ string

funkcja zwracająca typ string
Reiko
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 4 lata
0

Witam,

przepisuję sobie swój moduł z Delphi do BCB i trafiłem na problem z funkcją zwracającą typ string. Plik nagłówkowy zaczyna się tak:

Kopiuj
 //---------------------------------------------------------------------------

#ifndef ReikoH
#define ReikoH
//---------------------------------------------------------------------------
class TRS
{
private:	// User declarations
public:		// User declarations
        String user();
};
#endif

a plik CPP wygląda tak:

Kopiuj
 //---------------------------------------------------------------------------


#pragma hdrstop

#include "Reiko.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

String user()
{
 return "bla bla bla";
}

I dostaję komunikat "Type name expected" ale typ jest podany a gdy zamienię String na int to wszystko gra. Co robię nie tak?

edytowany 1x, ostatnio: Reiko
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:7 dni
1
Kopiuj
class TRS
  {
   public:
   string user();
  };

string TRS::user()
  {
   return "bla bla bla";
  }

Zacznij może od jakichś podstaw C++


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Reiko
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 4 lata
0

Dobra, ale wciąż mam to samo. Przy string user(); dostaję ten sam komunikat.

kq
Moderator C/C++
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Szczecin
1

Bo musisz jeszcze załączyć definicję tego typu. #include <string> jeśli mówimy o klasie std::string


_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:7 dni
0

Jak wyżej ... oraz dodać using namespace std; lub zamienić string na std::string lub:
użyć typu AnsiString - to ten odpowiednik String z Delphi.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Reiko
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 4 lata
0

Mam ją w pliku *.h i wciąż jest to samo.

_13th_Dragon
Bo tego za mało.
Reiko
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 4 lata
0

Jeszcze raz... Oto plik nagłówkowy:

Kopiuj
 //---------------------------------------------------------------------------

#ifndef ReikoH
#define ReikoH
#include <string>
//---------------------------------------------------------------------------
class TRS
  {
   public:
   AnsiString user();
  };

AnsiString TRS::user()
  {
   return "bla bla bla";
  }

Wciąż mam ten sam komunikat.

kq
bo &lt;string&gt; daje std::string a nie AnsiString
Reiko
W takim razie gdy chce uzyc AnsiString to mam usunac #include <string> i dodac cos innego? Gdy usuwam #include <string> dostaje wciaz ten sam blad.
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:7 dni
2

Masz wybrać jedno z:
1.

Kopiuj
#include <string>
...
std::string ...
Kopiuj
#include <string>
using namespace std;
...
string ...
Kopiuj
#include <vcl.h>
...
AnsiString ...

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
Reiko
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 4 lata
0

dziękuję :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.