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

dar*_*rko 1 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
Run Code Online (Sandbox Code Playgroud)

主功能

//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;
}
Run Code Online (Sandbox Code Playgroud)

三角形状

# include "header.h"

triangleType triangleShape(sideLenght1, sideLength2, sideLength3)
{
    triangleType triangle;
    return triangle;
}
Run Code Online (Sandbox Code Playgroud)

mar*_*cog 6

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

triangleType triangleShape(sideLenght1, sideLength2, sideLength3)
Run Code Online (Sandbox Code Playgroud)

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

triangleType triangleShape(float sideLenght1, float sideLength2, float sideLength3)
Run Code Online (Sandbox Code Playgroud)