2011-02-05 52 views
1

C++で列挙型のデータ型について学ぶのに役立つプログラムを作成しています。現在の問題は、他のデータ型と同じように新しいデータ型を使用しようとすると、コンパイラが列挙型の使用を気に入らないということです。私はtrangleShape関数をコンパイルするときにエラー "別の種類のシンボルとして再宣言"を取得しています。関連するコードを見てください。どんな洞察にも感謝しています!ありがとう!列挙型の問題:異なる種類のシンボルとして再宣言されました

(すべての機能は、独自の.cppファイルである。)

ヘッダファイル

#ifndef HEADER_H_INCLUDED 
#define HEADER_H_INCLUDED 

#include <iostream> 
#include <iomanip> 

using namespace std; 

enum triangleType {noTriangle, scalene, isoceles, equilateral}; 

//prototypes 
void extern input(float&, float&, float&); 
triangleType extern triangleShape(float, float, float); 
/*void extern output (float, float, float);*/ 
void extern myLabel(const char *, const char *); 



#endif // HEADER_H_INCLUDED 

メイン関数

//8.1 main 
// this progam... 

#include "header.h" 

int main() 
{ 
    float sideLength1, sideLength2, sideLength3; 
    char response; 


    do //main loop 
     { 
      input (sideLength1, sideLength2, sideLength3); 
      triangleShape (sideLength1, sideLength2, sideLength3); 
      //output (sideLength1, sideLength2, sideLength3); 
      cout << "\nAny more triangles to analyze? (y,n) "; 
      cin >> response; 
     } 
    while (response == 'Y' || response == 'y'); 

    myLabel ("8.1", "2/11/2011"); 

    return 0; 
} 

triangleShapeが

を形作ります3210
# include "header.h" 

triangleType triangleShape(sideLenght1, sideLength2, sideLength3) 
{ 
    triangleType triangle; 
    return triangle; 
} 

答えて

6

問題は列挙型とは関係ありません。問題のある行は、あなたのtriangleShape定義でこの行です:

triangleType triangleShape(sideLenght1, sideLength2, sideLength3) 

あなたはintにパラメータや、gccのデフォルトとして、いくつかのコンパイラの型が欠落している(あなたが頼るべきではありませんので、これは標準的な動作ではありませんが、それ)。関数定義ではfloatが使用されているため、コンパイラはそれを別の方法で再宣言すると見なします。実装では、floatを指定する必要があります。

triangleType triangleShape(float sideLenght1, float sideLength2, float sideLength3) 
+0

Doh!いつもそれはそうではない、何かばかげた何か?ありがとう – darko