/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste