我需要帮助才能理解以下(简化)代码剪辑:
const processArgs = ['-e', 'tell application "iTunes" to activate'];
我需要帮助理解的两行最后标有template < typename R >
struct Variable
{
typedef VariableBaseTable< R > BaseType;
typedef R BaseType::* VarType; //!
template < typename Type >
R & operator()(Type * obj) const
{
return (reinterpret_cast< ObjType >(obj))->*(_variable); //!
}
// more stuff follows
}
。
我无法理解//!
定义的是什么。特别是R BaseType::*
语法如何工作。
在第二个标记的行中,我无法理解语法::*
,我可以看到obj被解除引用,但是obj->*(_var)
之后正在做什么?
答案 0 :(得分:2)
typedef R BaseType::* VarType;
是一种类型别名,它将VarType
定义为BaseType
类型R
的成员指针。在第二个标记的行中,您通过pointer-to-member access operator _variable
访问字段->*
,例如, this了解有关语法和一些示例的更多详细信息。