|
| Array i struct, til funktion Fra : Rasmus Steffensen |
Dato : 03-03-05 23:05 |
|
Hej
Jeg bruger BCPPB6.
Hvis jeg laver en struct:
struct AnsiArray
{
AnsiString Ans[100];
};
og bruger den som result i en funktion:
AnsiArray TestFunc()
{
AnsiArray a;
a.Ans[0]="Hej";
return a;
}
Hvis jeg så i mit main program kalder funktionen og vil prøve at kikke alle
felterne i array'et igennem:
AnsiArray b;
b=TestFunc();
for(int i=0;i<100;i++)
{
b[i];
}
får jeg følgende fejl:
[C++ Error] Filnavn.cpp E2094 'operator+' not implemented in type
'AnsiArray' for arguments of type 'int'
Hvad skyldes det, hvordan løser jeg problemet?
På forhånd tak!
Mvh. Rasmus Steffensen
| |
Ivan Johansen (03-03-2005)
| Kommentar Fra : Ivan Johansen |
Dato : 03-03-05 23:24 |
|
Rasmus Steffensen wrote:
> [C++ Error] Filnavn.cpp E2094 'operator+' not implemented in type
> 'AnsiArray' for arguments of type 'int'
>
> Hvad skyldes det, hvordan løser jeg problemet?
Det er godt nok en noget misvisende fejlmeddelelse.
b er ikke et array, og du har ikke overloaded operator[] for AnsiArray,
så du kan selvfølgelig ikke skrive b[i]. Måske mente du b.Ans[i] i stedet.
Ivan Johansen
| |
Thorsten Ottosen (03-03-2005)
| Kommentar Fra : Thorsten Ottosen |
Dato : 03-03-05 23:52 |
|
"Rasmus Steffensen" <Rasmus@CimberAirVirtual.net> wrote in message
news:d081n4$2t2o$1@news.cybercity.dk...
| Hej
|
| Jeg bruger BCPPB6.
| Hvis jeg laver en struct:
| struct AnsiArray
| {
| AnsiString Ans[100];
| };
| og bruger den som result i en funktion:
| AnsiArray TestFunc()
| {
| AnsiArray a;
| a.Ans[0]="Hej";
| return a;
| }
C-style arrays er onde. Du vil fx ikke kopiere dit array Ans i AnsiArray
når du returnere det fra functionen.
Brug std::vector<AnsiString> og boost::array<AnsiString,100>, i den
rækkefølge.
mvh
-Thorsten
| |
Ivan Johansen (04-03-2005)
| Kommentar Fra : Ivan Johansen |
Dato : 04-03-05 00:19 |
|
Thorsten Ottosen wrote:
> C-style arrays er onde. Du vil fx ikke kopiere dit array Ans i AnsiArray
> når du returnere det fra functionen.
Et array er måske ikke det bedste valg, men det vil blive kopieret korrekt.
> Brug std::vector<AnsiString> og boost::array<AnsiString,100>, i den
> rækkefølge.
Det er jeg enig i. Der skal være en god grund til at vælge et array frem
for en container.
Ivan Johansen
| |
Thorsten Ottosen (04-03-2005)
| Kommentar Fra : Thorsten Ottosen |
Dato : 04-03-05 01:39 |
|
--
Thorsten Ottosen
----------------------------
www.dezide.com
www.cs.aau.dk/index2.php?content=Research/bss
www.boost.org
www.open-std.org/JTC1/SC22/WG21/
"Ivan Johansen" <ng6@padowan.REMOVE.dk> wrote in message
news:42279af6$0$162$edfadb0f@dtext02.news.tele.dk...
| Thorsten Ottosen wrote:
| > C-style arrays er onde. Du vil fx ikke kopiere dit array Ans i AnsiArray
| > når du returnere det fra functionen.
|
| Et array er måske ikke det bedste valg, men det vil blive kopieret korrekt.
yep, sorry about that.
-Thorsten
| |
|
|