2016-05-04 5 views
0

私はC++を学んでおり、テンプレートの専門化には少し問題があります。私はVariable.Set()をたくさん呼び出す必要があるので、関数が参照を取り込ませて文字列のコピーに多くの時間を費やさないようにしました。しかし、私が持っている問題はVariable.Set<int>(5);です。パラメータはrvalueなので、私はこの解決策を知らないのでエラーが発生します。C++のテンプレート特化の値

エラーC2664: '空の変数::セット(&をint型)': '&をint型' から 'int型から引数1を変換することはできません

あなたが一定の参照に自分のパラメータを変更する必要が
void main() 
{ 
    Variable var; 
    var.Set<int>(5); 
} 

struct Variable 
{ 
    int integer; 
    float floating; 
    std::string string; 

    template<typename T> void Set(T& v); 
    template<> void    Set<int> (int& v) { integer = v; } 
    template<> void    Set<float> (float& v) { floating = v; } 
    template<> void    Set<std::string> (std::string& v) { string = v; } 
}; 
+4

'void main'は' int main'にする必要があります。そして、パラメータタイプ 'const&'を – Praetorian

+0

にすると、タブのサイズはどういう意味ですか? – Budskii

+0

何も、ちょうどコメントを忘れて;) – user463035818

答えて

関連する問題