在模板类中查找变量的长度

时间:2017-09-04 13:48:16

标签: c++ templates size dynamic-memory-allocation memcpy

考虑以下方法:

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;
}

0 个答案:

没有答案