首页 > 解决方案 > 如何解决“未声明的标识符”和“重新定义形参”?

问题描述

我正在开发一个计算平均加速度的程序,我在编写代码后使用 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;
}

标签: c++pass-by-reference

解决方案


您多次声明具有相同名称的变量。由其名称定义的每个变量都应完全声明为 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;
}

推荐阅读