c++ - 如何解决“未声明的标识符”和“重新定义形参”?
问题描述
我正在开发一个计算平均加速度的程序,我在编写代码后使用 3 个函数(通过引用方法)发生此错误和“错误 C2082:重新定义形式参数 'Vo'”。我用谷歌搜索它,我几乎不明白。谁能向我解释为什么会发生这种情况以及如何解决这个问题?谢谢你的帮助
/* lab assessment 4 kiraan pecutan*/
#include <iostream>
using namespace std;
void data(double& Vo,double& Vt,double& t);
void calculate(double& sum);
void output(double& out);
double Vo,Vt,t,sum,out;
int main()
{
cout<<"please enter your velocity(Vo=m/s)\n,velocity(Vt=m/s)\nand time(s=second)\n\n";
data(Vo,Vt,t);
calculate(sum);
output( out);
return 0;
}
void data(double& Vo,double& Vt,double& t)
{
double Vo,Vt,t;
cin>>Vo;
cin>>Vt;
cin>>t;
cout<<"your Vo="<<Vo<<" ,Vt="<<Vt<<" and T="<<t<<"\n\n";
}
void calculate(double& sum )
{
double Vt,Vo,t;
sum=(Vt-Vo)/t;
}
void output(double& out)
{
double sum;
cout<<"the acceleration ="<<sum;
}
解决方案
您多次声明具有相同名称的变量。由其名称定义的每个变量都应完全声明为 1。不允许使用相同的变量名,例如作为函数参数和函数体中的变量名,例如
void data(double &Vo) {
double Vo = 0.0; // Vo already exists with type double&
// do something
}
请考虑以下提示:
- 除非必要,否则不要使用全局变量,它们在大项目中很难调试
- 总是用一个值初始化基本类型(int、float、double、...)的变量,否则它们会得到一个“随机”变量
即使语义/计算可能错误,以下代码也应该可以正确编译。我刚刚使用了你的实现。
#include <iostream>
using namesace std;
//--------------------------------------------------------------------------//
void data(double &Vo, double &Vt, double &t);
void calculate(double &Vo, double &Vt, double &t, double &sum);
void output(double &out);
//--------------------------------------------------------------------------//
int main() {
double Vo = 0.0;
double Vt = 0.0;
double t = 0.0;
double sum = 0.0;
double out = 0.0;
cout << "please enter your velocity(Vo=m/s)\n,velocity(Vt=m/s)\nand time(s=second)\n\n";
data(Vo, Vt, t);
calculate(Vo, Vt, t, sum);
output(out);
return 0;
}
//--------------------------------------------------------------------------//
void data(double &Vo, double &Vt, double &t) {
cin >> Vo;
cin >> Vt;
cin >> t;
cout << "your Vo=" << Vo << " ,Vt=" << Vt << " and T=" << t << "\n\n";
}
//--------------------------------------------------------------------------//
void calculate(double &Vo, double &Vt, double &t, double &sum) {
sum = (Vt - Vo) / t;
}
//--------------------------------------------------------------------------//
void output(double &out) {
cout << "the acceleration =" << out;
}
推荐阅读
- google-sheets - 一张图表中的三个 Google 表格的数据图表(饼图)
- iphone - 构建一个使用 React Native 创建的 iPhone 应用程序
- axon - 如何在 Saga 中测试具有内部状态的方法
- git - Git克隆和修改开源作为子目录并与master保持更新
- elasticsearch - 从 Elasticsearch 获取不同的字段
- javascript - Laravel 不导入/读取公共源文件 (css/js)
- c# - 如何使用 RegAsm 调用方法 C# Dll 方法?
- swift - Swift 4.2 UIDocumentBrowser View Controller Powerpoint PPTX 文件灰显
- database - symfony 对数据库表名有什么建议?
- ionic-framework - 如何从对讲或其他屏幕阅读器读取离子应用程序网络视图?