Я хочу иметь класс, который хранит пару переменных разных типов, но мне нужно передать нулевые или нулевые значения по умолчанию для переменных в качестве параметров шаблона. Я могу сделать это для int или double, но как мне сделать это для строки? Я знаю, что тот C ++ в настоящее время не имеет строковых параметров, но каковы альтернативные конструкции. Мне нужно что-то вроде этого:
#include <iostream>
#include <string>
using namespace std;
template <typename atype, typename btype, atype anull, btype bnull>
class simpleClass {
public:
atype var1;
btype var2;
simpleClass<atype, btype, anull, bnull> *parent; // pointer to parent node
simpleClass(); ~simpleClass();
};
template <typename atype, typename btype, atype anull, btype bnull>
simpleClass<atype, btype, anull, bnull>::simpleClass() { var1 = anull; var2 = bnull;
parent = NULL; }
template <typename atype, typename btype, atype anull, btype bnull>
simpleClass<atype, btype, anull, bnull>::~simpleClass() {}
int main() {
simpleClass<string, int, "", 0> 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