0

私はあまりにも長い間頭を悩ませてきました。MPLを使用することは非常に困難であり、誰かが私を始めてくれることを望んでいます。これは、私が開発している、MPLを使用しないクラスの部分的なコードです。最終的には、このクラスをすべてコンパイル時に実装したいと思います。このコードはおそらく意味をなさないでしょうが、私はMPLのすべてのソリューションを望んでいません-うまくいけば、私はそれを自分で達成することができます(特定のヘルプについては以下を参照してください)。

class define_cell_type{
public:
    define_cell_type () = default;
    define_cell_type (const std::string& name_of_cell) : 
            cName {name_of_cell} {};

    double& add_variable (const std::string& Name,
            const double& init_value,
            VARIABLE declr_type = VARIABLE::STATIC_V)
    {
       vInit_val.push_back(init_value);
       vData.push_back( std::make_tuple(Name) );
            return vInit_val.back();
    };

private:
    std::string cName;
    std::vector<double> vInit_val;
    std::vector<variable_tuple> vData;
};

開始するには、double型のmpl :: vectorでpush_backを実行するにはどうすればよいですか?これは、私が開発しているクラスの関数に似たものから始めたい例です。

std::vector<double> state;
double& add_variable ( const double& init_val)
{
    state.push_back(init_val);
    return state.back();
} 

int main() {
    auto var1 = add_variable (12.2);
    auto var2 = add_variable (1.2);
    auto var2 = add_variable (6.4);
}

私が得ることができるのはこのようなものだけです

typedef mpl::vector<double> state;
typedef mpl::push_back<state,double>::type types;

上記の例を押し戻す値を使用してコンパイル時ベクトルを作成するために、誰かが私を始めてくれたらありがたいです。

4

0 に答える 0