枚举麻烦:重新声明为不同类型的符号

时间:2011-02-05 23:08:50

标签: c++ enumeration

我正在编写一个程序,可以帮助我了解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 shape

# include "header.h"

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

1 个答案:

答案 0 :(得分:6)

您的问题与枚举无关。问题行是triangleShape定义中的这一行:

triangleType triangleShape(sideLenght1, sideLength2, sideLength3)

你缺少参数的类型和一些编译器,例如gcc默认为int(虽然这不是标准行为,所以你永远不要依赖它)。由于函数定义使用float,因此编译器将其视为以不同方式重新声明它。您应该在实现中使用指定float

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