当我在模板结构中将范围解析运算符用作方法声明的一部分时,它将无法正常工作。但是,当我在同一模板结构中的方法定义中使用相同的作用域解析运算符作为sizeof()的一部分时,它可以正常工作。有人可以帮我将此作为方法定义的一部分吗?我在Visual Studio中使用Visual C ++。这是问题的代码示例。
sample.h
struct Top {
struct Data {
int time;
};
Data* pData;
};
template<typename T>
struct App {
T* pParent;
T::Data* getDD() { // error C2061: syntax error: identifier 'Data'
return pParent->pData;
}
int getSize() {
return sizeof(T::Data); // This works fine
}
};
sample.cpp
main() {
Top top;
App<Top> app;
Top::Data* pData = app.getDD();
int size = app.getSize();
}