我必须将重载的构造函数表单类Parameters
放入类Solver
中的函数中。
这是参数标题:
#ifndef Parameters
#define Parameters
#include <iostream>
#include<conio.h>
#include<fstream>
#include<string>
using namespace std;
class Parameters
{
int M;
double dx;
double eps;
public:
Parameters( );
Parameters(int M1, double dx1, double eps1 );
Parameters( string fileName);
};
#endif
构造函数使用默认值或由用户从键盘或文件中选择的默认值初始化M
,dx
,eps
。
我想要另一个将包含此初始化值的类(为了最近解决这个方程,也在该类中)。
问题是,尽管我尝试通过值,引用或/指针执行此操作,但始终会编译一些错误或代码,但什么也没做。
这是我的规划求解课程:
#include "ParametersH.h"
#include "EquationH.h"
#include <iostream>
#include<conio.h>
#include<fstream>
#include<string>
#include<vector>
using namespace std;
class Solver
{
public:
int Solve( Parameters& obj );
};
int Solver::Solve( Parameters& obj)
{
cout << obj.M; // M is private so it fails :<
// another attempt was like this:
Parameters *pointer = new Parameters();
}
int main()
{
Solver Solve();
return( 0 );
}
我真的无法应付,希望有人能帮忙。
答案 0 :(得分:1)
如评论中提到的@lubgr,在这里
Solver Solve();
您声明一个名为Solve()
的函数,而没有给您一个Solver
对象的参数,而不是成员函数Solve( Parameters& obj );
如果您的目标是访问Parameters
类中的Solver
类的私有成员:您可以
Solver
的朋友,Parameters
:See here或Parameters
的结构,您可以通过该结构访问内部的所有内容
它但是,看起来您只需要一个结构Parameters
和一个简单的函数Solve( Parameters& obj);
就可以了。
struct Parameters
{
int m_;
double dx_, eps_;
Parameters(int M1, double dx1, double eps)
: m_(M1), dx_(dx1), eps_(eps) // provide other contrs as per
{}
};
int Solve(Parameters& obj)
{
std::cout << obj.m_ << " " << obj.dx_ << " " << obj.eps_ << std::endl;
return obj.m_;
}
现在只需main()
:
std::cout << "result: " << Solve(Parameters(1, 2.0, 3.0));