H Honken Medlem sedan apr. 2002 9 inlägg Frågan 16 apr. 2002 20:14 #1 Jag har blivit tipsad om att använda string istället för char. I följande exempel funkar et utmärkt:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
struct TEST
{
string str;
};
TEST test_1;
test_1.str = "Test";
cout \<\< test_1.str;
return 0;
}
Men problemet är när jag i mitt större projekt (skall bli ett bilspel i DOS) kommer förljande felmedelande upp när jag gör exakt samma sak:
error C2146: syntax error : missing ';' before identifier 'str'
error C2501: 'string' : missing storage-class or type specifiers
error C2501: 'str' : missing storage-class or type specifiers
Var ligger felet........ spelar det någon roll i vilken årdening headerfilerna ligger i?
P PeW Medlem sedan juni 2000 10 432 inlägg r: <såg nu att det inte var den koden du hade problem med>
:r
P PeW Medlem sedan juni 2000 10 432 inlägg Honken ->
Kolla så att du har #include<string> och det innan "using namespace std" i din fil... och kan du inte visa mer kod från den filen du har problem med?
P PeW Medlem sedan juni 2000 10 432 inlägg Splittade tråden
...eftersom den hamnade långt från topic och Honken kanske vill ha svar på sin fråga i första hand. Diskussionen om structar hamnade här -> http://www.webforum.nu/showthread.php?s=&threadid=41025
PeW /moderator
H Honken Medlem sedan apr. 2002 9 inlägg Här kommer en del utav programmet:
//Standard Headerfiler//
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <stdio.h>
#include <time.h>
#include <windows.h>
#include <winbase.h>
#include <wincon.h>
//Egna Headerfiler//
#include "cars.h"
#include "gameoption.h"
#include "race.h"
#include <string.h>
using namespace std;
Strukturen ligger i en egen headerfil vid namn cars.h:
struct Cars
{
string test ;
// char * car_name[50];
int car_yrmodel;
int car_price;
int car_hp;
int car_topspeed;
int exspeed;
};
Cars car_1;
//////////////////////////////////////////////////////////////
Tillbaka till main.ccp
int main()
{
car_1.test = "Test ";
cout << car_1.test;
}
Hoppas detta hjälper lite annars kan jag skick med hela programmet....
Tack på förhand
C Chainsaw Medlem sedan sep. 2000 1 124 inlägg Det förklarar saken... Du måste lägga in #include <string> och using namespace std; även i cars.h. Gör det till en vana att *alltid* inkludera de filer som behövs för att header-filen ska kunna fungera.
P PeW Medlem sedan juni 2000 10 432 inlägg Som en not:
Man bör undvika att skriva "using namespace std" i headerfiler. Kör ist med namespace::vad_det_nu_är... när det ska till, typ:
std::string str;
std::vector<template> v;
m.m...
Annars kan det ena mystiska felet efter det andra dyka upp ;)