2 回答
TA贡献1844条经验 获得超8个赞
你没有加 void ,而你的编译器在此时默认 SeqStackPush返回值类型为int,这和你之前声明的原型冲突,所以报错,解决方法很简单,就是加上void,如下,
void SeqStack::SeqStackPush(int e)
{
//error C2556: 'int __thiscall SeqStack::SeqStackPush(int)' : overloaded function differs only by return type from 'void __thiscall SeqStack::SeqStackPush(int)'
//error C2371: 'SeqStackPush' : redefinition; different basic types
elem[++top]=e;
cout<<"elem[++top]=e已实现"<<endl;
}
TA贡献1895条经验 获得超3个赞
SeqStack(int size);
void SeqStackPush(int e);
你定义了两个push函数 编译器判定为重定义了
原因是这样的 区别两个函数是不是相同的 要看函数名 和 参数列表 以及命名空间
函数的返回值是不能作为区别两个函数的指纹的
你可以设想这样一个例子
比如说你第一个push是int型的返回值
你在某个场景下调用
SeqStackPush(1);
这时编译器就不知道该调用哪个了 因为返回值是int型的函数也可以单独是用而不必用一个变量来接收返回值。
- 2 回答
- 0 关注
- 457 浏览
添加回答
举报