2


0

テンプレートパラメータとして空の文字列が必要です

異なるタイプの変数のペアを格納するクラスが必要ですが、変数のゼロまたはnullのデフォルトをテンプレートパラメーターとして渡す必要があります。 intまたはdoubleに対してこれを行うことができますが、stringに対してはどうすればよいですか? 現在、c ++には文字列パラメーターがないことを知っていますが、ラテナティブデザインは何ですか。 私はこのようなものが必要です:

#include
#include

using namespace std;

template
class simpleClass {
public:
    atype       var1;
    btype       var2;

    simpleClass   *parent;          // pointer to parent node

    simpleClass(); ~simpleClass();
};
template
simpleClass::simpleClass()  {   var1 = anull; var2 = bnull;
                        parent  = NULL;  }
template
simpleClass::~simpleClass() {}


int main() {
    simpleClass obj;
    obj.var1 = "hello";
    obj.var2 = 45;
    cout << obj.var2;
    return 0;
}

これをコンパイルすると、

error: ‘struct std::string’ is not a valid type for a template constant parameter

1 Answer


4


ポインターと参照を除き、非整数型をテンプレートパラメーターとして渡すことはできません。 期待できる最良の動作は、 atype`と btype`の「デフォルト」値を返す関数を渡すことです。