適切なヘッダーが含まれていると仮定します。
電卓のさまざまな機能のクラスがあります。さまざまな演算子タイプ (nullary、Unirary、Binary、Ternary) の構造体がいくつかあります。電卓がサポートする要素が埋められた構造体のベクトル (またはできれば配列) を初期化したいと考えています。たとえば、nul[]={{pi, "pi"}, {ans, "ans"}};
私のプログラムは入力からトークンを取得し、適切な演算子を検索し、その演算子のインデックスを返し、適切な関数ポインターを呼び出します。私の問題は、コンストラクターで配列またはベクトルを初期化することです。誰かが私に両方の方法を教えてくれれば幸いです。ありがとうございました。以下は私のクラスと未完成のコンストラクターです。また、電卓を書くためのより良い方法を考えられるなら、ぜひ聞いてみたいです。
//operator class
class Functions{
public:
Functions();
double pi(double x=0);
double answer(double& x);
double abs(double& x);
double pow(double& x);
double add(double& x, double &y) const;
double subtract(double& x, double& y) const;
double multiply(double& x, double& y)const;
double divide(double& x, double& y) const;
double max(double& x, double& y, double& z) const;
double volume(double& x, double& y, double& z) const;
void doc();
bool weird(double &x) const;
unsigned findop0(const string & name);
unsigned findop1(const string & name);
unsigned findop2(const string & name);
unsigned findop3(const string & name);
private:
struct Nul{
double (*nulf)(double & x);
string name;
};
struct Uni{
bool (*unif)( double & result, double x );
string name;
};
struct Bin{
bool (*binf)( double & result, double x, double y );
string name;
};
struct Tern{
bool (*terf)( double & result, double x, double y, double z );
string name;
};
static const unsigned NUL_ELEMENTS = 2;
static const unsigned UNI_ELEMENTS = 2;
static const unsigned BIN_ELEMENTS = 4;
static const unsigned TRI_ELEMENTS = 2;
vector<Nul> nul;
vector<Uni> uni;
vector<Bin> bin;
vector<Tern> tri;
};
Functions::Functions(){
nul
}