我正在编写一个程序,可以帮助我了解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;
}
答案 0 :(得分:6)
您的问题与枚举无关。问题行是triangleShape定义中的这一行:
triangleType triangleShape(sideLenght1, sideLength2, sideLength3)
你缺少参数的类型和一些编译器,例如gcc默认为int
(虽然这不是标准行为,所以你永远不要依赖它)。由于函数定义使用float
,因此编译器将其视为以不同方式重新声明它。您应该在实现中使用指定float
:
triangleType triangleShape(float sideLenght1, float sideLength2, float sideLength3)