Jump to content

Overkill C++


Guest al6
 Share

Recommended Posts

Är det någon här som är en riktig rackafjongare på C++? Det är så att jag testade det jag lärt mig ur min bok, och kom på en sak som inte kan stämma, kanske fel i Visual Studio?

Om jag vill göra en vektor av pekare till char (en vektor av strängar) skriver jag:

char *test[] = {"Första strängen","Andra strängen","Tredje strängen"};

Men eftersom en vektor inte kan ändra sin adress, utan måste användas tillsammans med ett index, ville jag istället ha en pekare till en pekare till en char för att slippa den onödiga "index-variabeln":

char **test = {"Första strängen","Andra strängen","Tredje strängen"};

Detta är dock fel enligt mitt Visual Studio 2008; initieringen blir fel säger den, så jag testade att skriva:

char *temp[] = {"Första strängen","Andra strängen","Tredje strängen"};

char **test = temp;

Vilket fungerar utmärkt, vilket jag inte förstår; det är ju samma sak som föregående sats, fast att test får sin adress av temp, inte via initieringen?

Så min fråga är: Är detta ett fel i Microsofts kompilator, eller ska jag använda någon typomvandling för att kunna skapa denna char ** och samtidigt kunna tilldela den en adress vid initieringen?

Felmeddelandet lyder: error C2440: 'initializing' : cannot convert from 'const char [16]' to 'char **'.

Link to comment
Share on other sites

Guest Fluorescent79

Jag erkänner att det var ett tag sedan jag pysslade med c++, men jag ska försöka förklara min tolkning av ditt bekymmer.

När du kodar char *test[] = {...} så säger du, skapa en pekare till enchar vektor med inehåll ...

Men när du kodar char **test = {...} så säger du, skapa en pekare till en pekare med inehåll. Kompilatorn har helt enkelt inte fått förklarat för sig att det ska vara en vektor inblandad.

Verkr det rimligt??

Link to comment
Share on other sites

Bra svar :) Jag var lite inne på det också eftersom jag inte alls säger till att det rör sig om en massa tecken mellan dessa pekare, men om jag först deklarerar det som en vektor av pekare så förstår tydligen kompilatorn det.

Nåja, det är ju trots allt inget stort problem, mer att man får deklarera en temporär vektor av pekare och sen göra sin char ** av den. Men det borde väl finnas någon typomvandling man kan göra för att få kompilatorn att förstå vad det handlar om?

Kul att någon förstod vad det rörde sig om :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...