在C ++中访问泛型结构的成员会产生错误

时间:2016-05-26 18:26:45

标签: c++ templates struct

我是来自C的C ++的完全初学者。我将此代码编写为简单数据库应用程序的一部分:

#include <cstdint>

template <typename T>
struct entry {
  uint64_t ID;
  T data;
};

template <typename T>
uint64_t calculate_offset(entry<T> thing) {
  return sizeof(uint64_t) * entry<T>.ID;
}

我想访问entry.ID而无需知道entry.data的类型。当我尝试编译我的代码时,clang给出了以下错误:

totes.cpp:11:48: error: expected '(' for function-style cast or type construction

如何实现理想的行为?这个错误意味着什么?

1 个答案:

答案 0 :(得分:1)

entry<T> thing
// entry<T> is the type
// thing is the name of an instance of the type

要通过对象的实例访问类或结构的成员状态。例如:

thing.ID;