先前声明的c++函数
C++ function previously declared
我正在为课程作业制作一个战舰程序,我正在调试玩家的部署,我遇到了一个错误,我无法找到解决方案,这是:
bb.cpp:12: error: previous declaration of ‘int vert(int*, std::string)’
我已经在我的代码中搜索了任何先前对int转换的引用,但没有找到任何内容。
下面是函数原型
//game function prototypes
int deploy();
int firing();
int gridupdte();
int win = 0;
int vert(int *x, string sa);
int hor(int *y, string s);
int check();
函数vert:
int vert(*shipx, shiptype) //Calculates where the bow of the ship should be (the pointy bit)
{
int shiplen;
int bow;
switch(shiptype) // Determines the length to add to the y co-ordinate
{
case "cv" : shiplen = 5; break;
case "ca" : shiplen = 4; break;
case "dd" : shiplen = 3; break;
case "ss" : shiplen = 3; break;
case "ms" : shiplen = 2; break;
}
bow = *shipx + shiplen;
*shipx = bow;
return *shipx;
}
int hor (*shipy, shiptype) //Calculates where the bow of the ship should be (the pointy bit)
{
int shiplen;
int bow;
switch(shiptype) // Determines the length to add to the x co-ordinate
{
case "cv" : shiplen = 5; break;
case "ca" : shiplen = 4; break;
case "dd" : shiplen = 3; break;
case "ss" : shiplen = 3; break;
case "ms" : shiplen = 2; break;
}
bow = *shipy + shiplen;
*shipy = bow;
return *shipy;
}
我知道在整个代码的编译中还有其他错误
int vert(*shipx, shiptype) { .. }
没有告诉参数的类型。
您没有告诉我们完整的错误(跨越多行),但我怀疑它表示前面的声明与的定义不匹配。
写:
int vert(int* shipx, string shiptype) { .. }
您需要在函数定义中包含参数的类型和名称:
int vert (int *shipx, string shiptype) {
...
}
您还应该使原型和定义之间的参数名称匹配
int vert(int *shipx, std::string shiptype)
应该是第三个灰框中定义的样子,也更改hor
这篇文章并没有真正解决你所引用的错误。但是你的代码还有一个问题,我想指出,并建议你解决这个问题。
在c++中,switch-case
只能是整型常量,不能是字符串字面值。
所以这是错误的:
switch(shiptype) // Determines the length to add to the x co-ordinate
{
case "cv" : shiplen = 5; break;
case "ca" : shiplen = 4; break;
case "dd" : shiplen = 3; break;
case "ss" : shiplen = 3; break;
case "ms" : shiplen = 2; break;
}
无法编译
我建议您定义一个enum ShipType
,如:
enum ShipType
{
cv,
ca,
dd,
ss,
ms
};
然后声明shiptype
为ShipType
类型,这样你就可以这样写:
switch(shiptype) // Determines the length to add to the x co-ordinate
{
case cv : shiplen = 5; break;
case ca : shiplen = 4; break;
case dd : shiplen = 3; break;
case ss : shiplen = 3; break;
case ms : shiplen = 2; break;
}
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗