考虑以下方法:
template <class T>
void Entry<T>::setValue(T * value) {
int size = ?;
this->key = new T();
memcpy(this->value, value, size);
}
如何找到value
的长度?如果它是char*
我可以使用类似的东西:strlen(value)
,但事实并非如此。这里的变化是什么?
我尝试使用它:
template <class T>
void Entry<T>::setValue(T * value) {
this->value = value;
}
但是在方法调用后该值保持为空。
更新
我试过这个,但是没有编译:
template <class T>
void Entry<T>::setValue(T * value) {
int size = sizeof(value)/sizeof(value[0]);
cout << "size = " << size << endl;
this->key = new T();
memcpy(this->value, value, size);
}
错误是:
Entry.cpp:35:13: error: cannot convert ‘JSON_Value*’ to ‘char*’ in assignment
this->key = new T()
更新2
另一次尝试,这次代码编译但执行在第二行给出了一个Segmentation错误:
template <class T>
void Entry<T>::setValue(T * value) {
T temp = *value;
*value = *this->value;
*this->value = temp;
}