使用成员函数求解方程 C++
Posted
技术标签:
【中文标题】使用成员函数求解方程 C++【英文标题】:Using member function to solve equation C++ 【发布时间】:2020-05-19 10:23:15 【问题描述】:我目前正在尝试创建一个程序,通过将数组传递给类的成员函数来计算具有给定时间值的火箭的质量。我得到这两个错误,似乎无法弄清楚如何摆脱它们。任何建议都非常感谢,谢谢。
23 8 [错误] 'double equip::calcmass(double)' 的原型与 'equip' 类中的任何原型都不匹配
13 10 [错误] 候选是:双装备::calcmass()
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
using namespace std;
class equip
public:
double mass[999999999], velocity, height, time[999999999];
double calcmass();
private:
double T = 7000;
double g = 32.2;
double K = 0.008;
;
double equip::calcmass(double time)
int i = 0;
for(i=0; i=999999999; i++)
return mass[i] = (3000 - 40 * time[i]) / g;
int main()
int i = 0;
equip rocket;
ifstream infile;
string filename;
cout<<"Enter input file name for time (time): ";
cin>>filename;
infile.open(filename.c_str());
while(infile.fail())
cerr<<"Error opening file. \n";
cout<<"Enter file name: ";
cin>>filename;
infile.open(filename.c_str());
for(i=0; i<999999999; i++)
infile>>rocket.time[i];
for(i=0; i<999999999; i++)
cout<<rocket.mass[i];
return 0;
【问题讨论】:
建议:不要使用幻数。正确命名它们以使其更易于阅读。此外,那些大数组(999999999)可能会破坏堆栈。 【参考方案1】:在您声明的类定义中
double calcmass()
在成员函数的定义中是
double calcmass(double time)
它们不匹配。一个接受double
作为参数,另一个不接受。
【讨论】:
【参考方案2】:您缺少一堆标题,并且在函数声明中缺少函数定义中的参数:
#include <cmath>
#include <cstring>
#include <fstream>
#include<iostream>
using namespace std;
class equip
public:
...
double calcmass(double time); // here was missing the parameter
...
;
double equip::calcmass(double time)
...
另外你在time
上做time[i]
,这是一个double
,所以你不能使用operator[]
...如果你想传递一个数组,你可以使用pointer to double
:
class equip
...
double calcmass(double* time)
double equip::calcmass(double* time)
...
【讨论】:
以上是关于使用成员函数求解方程 C++的主要内容,如果未能解决你的问题,请参考以下文章