2013-10-15 2 views
-1

Salut, je suis nouveau à C++ et tester une structure dans un code C++ dans dev-C++. mais ce n'est pas compiler et donner des erreurs. Il fonctionne bien avec les extensions .h dans les directives du pré-processeur dans dev-C++. donc je ne pense pas que il porte les problèmes d'extension .hC++ struct test

#include<iostream.h> 
#include<conio.h> 
#include<iomanip.h> 
struct car 
{ 
    const int MAX=10; 
    char model[MAX]; 
    char spare_part[MAX]; 
    float cost;   

      } 
int main() 
{ 

    car BMW ; 
    BMW.model[MAX]="SLR-8 S"; 
    BMW.spare_part[MAX]="SILENCER"; 
    BMW.cost=175.56F; 


    cout << setw(50) << "\n\n WELCOME TO SHOWROOM" << endl << endl; 
    cout << "CAR MODEL: " << BMW.model[MAX] << endl; 
    cout << "SPARE PART: " << BMW.spare_part[MAX] << endl; 
    cout << "COST OF PRODUCT: " << BMW.cost[MAX] << endl; 
    return 0; 
    } 

journaux de compilation sont:

Compiler: Default compiler 
Executing g++.exe... 
g++.exe "D:\cdev\projects\structure.cpp" -o "D:\cdev\projects\structure.exe" -I"D:\cdev\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"D:\cdev\Dev-Cpp\include\c++\3.4.2\backward" -I"D:\cdev\Dev-Cpp\include\c++\3.4.2\mingw32" -I"D:\cdev\Dev-Cpp\include\c++\3.4.2" -I"D:\cdev\Dev-Cpp\include" -L"D:\cdev\Dev-Cpp\lib" 
In file included from D:/cdev/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, 
      from D:\cdev\projects\structure.cpp:1: 

D:/cdev/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated. 

D:\cdev\projects\structure.cpp:6: error: ISO C++ forbids initialization of member `MAX' 

D:\cdev\projects\structure.cpp:6: error: making `MAX' static 

D:\cdev\projects\structure.cpp:13: error: new types may not be defined in a return type 

D:\cdev\projects\structure.cpp:13: error: extraneous `int' ignored 

D:\cdev\projects\structure.cpp:13: error: `main' must return `int' 

D:\cdev\projects\structure.cpp: In function `int main(...)': 

D:\cdev\projects\structure.cpp:16: error: `MAX' undeclared (first use this function) 

D:\cdev\projects\structure.cpp:16: error: (Each undeclared identifier is reported only 
once for each function it appears in.) 

Execution terminated 
+1

veuillez inclure le message d'erreur dans votre message. –

+0

quelle erreur dit? BTW, généralement vous écrivez des définitions dans les fichiers H et le code réel dans les fichiers c/cpp –

+0

'BMW.model [MAX] =" SLR-8 S ";' est faux, et MAX ne peut pas être index aussi –

Répondre

1

Vérifiez vos points-virgules. Un est requis après la fermeture de la structure.

En outre, déclarer la variable MAX static, à savoir

{ 
    static const int MAX=10; 

mais le compilateur vous dit que l'un tout à fait bien ...

Et la troisième erreur vient du fait que vous déclarez MAX l'intérieur car , vous devez le référencer en conséquence car::MAX. Mais en réalité, toute la déclaration BMW.model[MAX]="SLR-8 S"; n'a pas vraiment de sens. Cela signifierait 'affecter la chaîne "SLR-8 S" au caractère après le dernier dans BMW.model' (pour un caractère [MAX], les indices valides commencent à 0, et vont à (MAX-1)!) . Meilleure utilisation std::string au lieu de char model[MAX], c'est de loin plus facile à manipuler! .: par exemple

struct car 
{ 
    std::string model; 

alors vous pouvez simplement dire

BMW.model="SLR-8 S"; 
2

Les valeurs stuct doivent être initialisées dans un constructeur, ou devrait être statique. Comme:

struct car 
{ 
    static const int MAX=10; 
    ... 

Il manque un point-virgule après la définition de structure. Il devrait être comme:

struct car 
{ 
    static const int MAX=10; 
    char model[MAX]; 
    char spare_part[MAX]; 
    float cost;   

}; 
+0

Je voudrais certainement vous augmenter mais je ne suis pas autorisé. mais il est bien meilleur moyen d'expliquer alors le reste des commentaires ci-dessus merci bro –

+0

j'ai mon code d'une autre manière et il fonctionne bien maintenant –