Forum: ogiltitg tilldelning

Forum huvudsida -> Programmering -> ogiltitg tilldelning

Sidor: 1

Till botten

Strum 12:23 - 9:e Februari 2008 | Post #1
Medlem
Inlägg: 4


Skicka PM
Hej hej, har precs kommit till uppgifter med separat kompilering! Skoj skoj, dock fastnar jag på ett ställe där jag
försöker tilldela en const sträng till ett struct element som består av en char[40]

medelandet lyder:

" incompatible types in assignement of 'const char*' to 'char [40]"

har skrivit koden på en annan dator så om ni kan hjälpa mig utan koden så vore det jätte sjysst, annars kan jag lägga upp koden.




Python 12:43 - 9:e Februari 2008 | Post #2
Medlem
Inlägg: 157


Skicka PM
Det vore bra om du kunde lägga upp koden.Smiley

-------------------------
-------------------------



Strum 15:32 - 9:e Februari 2008 | Post #3
Medlem
Inlägg: 4


Skicka PM
Här var det kod

Det är rad 8 i golf.cpp som den klagar på

  1. //Golf.h
  2.  
  3. const int LEN = 40;
  4. struct golf
  5. {
  6. char fullname[LEN];
  7. int handicap;
  8. };
  9.  
  10. void setgolf(golf & g, const char * name, int hc);
  11.  
  12. int setgolf(golf & g);
  13.  
  14. void handicap(golf & g, int hc);
  15.  
  16. void showgolf(const golf & g);

  1. //Golf.cpp
  2.  
  3. #include <iostream>
  4. #include "golf.h"
  5.  
  6. void setgolf(golf & g,const char * name,int hc)
  7. {
  8. g.fullname = name;
  9. g.handicap = hc;
  10. }
  11.  
  12. int setgolf(golf & g)
  13. {
  14. if(!(std::cin >> g.fullname))
  15. {
  16. std::cin >> g.handicap;
  17. return 0;
  18. }
  19. else
  20. {
  21. std::cin >> g.handicap;
  22. return 1;
  23. }
  24. }
  25.  
  26. void handicap(golf & g, int hc)
  27. {
  28. g.handicap = hc;
  29. }
  30.  
  31. void showgolf(const golf & g)
  32. {
  33. std::cout << g.fullname << std::endl;
  34. std::cout << g.handicap << std::endl;
  35. }



  1. //Golfmain.cpp
  2.  
  3.  
  4. #include <iostream>
  5. #include "golf.h"
  6. int main()
  7. {
  8. golf gnarf;
  9. setgolf(gnarf,"Tomas Wickman",24);
  10. std::cout << gnarf.fullname << std::endl;
  11. std::cout << gnarf.handicap << std::endl;
  12.  
  13. golf ark[5];
  14. std::cout << "skriv in 5 namn och handikapp, lämmna namnet tomt för att sluta\n";
  15. int i;
  16. int b = 0;
  17. while(i != 0 && b < 5)
  18. {
  19. i = setgolf(ark[i]);
  20. b++;
  21. }
  22. handicap(gnarf,27);
  23. for(i = 0;i < 5;i++)
  24. {
  25. showgolf(ark[i]);
  26. }
  27. system("pause");
  28. return 0;
  29. }





Nissebosselasse 16:23 - 9:e Februari 2008 | Post #4
Medlem
Inlägg: 490


Skicka PM
Du bör köra en strcpy istället, för det är det jag misstänker att du vill göra? Kopiera strängen till strukturen alltså?
Med tanke på att det är C++ du kodar i, borde du byta till std::string istället för att använda dig av char-pekare, det kommer ta bort en del huvudvärk.
Strukturen kan då ändras till:
  1. struct golf
  2. {
  3. std::string fullname;
  4. int handicap;
  5. };

...vilket medför att tilldelningen i setgolf...
  1. void setgolf (golf & g, const char *name, int hc)
  2. {
  3. g.fullname = name;
  4. g.handicap = hc;
  5. }

...fungerar såsom du tänkt dig, nämligen att strängen kopieras.

Du kan även fullfölja detta och ändra även i setgolf till:
  1. void setgolf (golf & g, const std::string & name, int hc)
  2. {
  3. g.fullname = name;
  4. g.handicap = hc;
  5. }


-------------------------
http://pushingcows.se
Gula Nallen



Strum 16:23 - 9:e Februari 2008 | Post #5
Medlem
Inlägg: 4


Skicka PM
edit: tack för hjälpen! ska försöka hålla mig till string.

dock när jag nu försöker kompilera det så stöter den på ett fel och måste avslutas. Jag antar att det beror på att jag skickar en sturct vektor till en funktion som förväntar sig en vanlig vektor. Svårt att veta eftersom jag inte får några felmedelanden förutom att det bara avslutas.

ser ni några buggar så skriv gärna vad jag gör för fel


Senast redigerad 16:28 - 9:e Februari 2008


Nissebosselasse 16:51 - 9:e Februari 2008 | Post #6
Medlem
Inlägg: 490


Skicka PM
Tänk på att variabeln i tilldelas aldrig något värde, men du kollar ändå om den är giltig (golfmain.cpp, rad 17). Eftersom den inte tilldelas något värde så kommer den få ett skräpvärde som är resultatet av det som låg där innan, något som du undviker med.

I övrigt menar du nog att använda just variabeln b på rad 19 i golfmain.cpp, så att den blir:
  1. i = setgolf (ark[b]);

Eftersom det ju är den som räknas upp som indexhållare, och inte i.

-------------------------
http://pushingcows.se
Gula Nallen



Sidor: 1

Forum huvudsida -> Programmering -> ogiltitg tilldelning
Atom feed

Du får inte posta i den här tråden | Till toppen