gpt4 book ai didi

c++ - typedef T Type::* 语法

转载 作者:太空狗 更新时间:2023-10-29 21:16:04 27 4
gpt4 key购买 nike

我需要帮助来理解以下(简化的)代码片段:

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->*(_var),我可以看到 obj 正在被取消引用,但是 * 是什么在那之后做吗?

最佳答案

typedef R BaseType::* VarType;

是一个类型别名,它将 VarType 定义为类型为 RBaseType 成员的指针。在标记的第二行中,您正在通过 pointer-to-member access operator 访问字段 _variable ->*,参见例如this有关语法和一些示例的更多详细信息。

关于c++ - typedef T Type::* 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36190913/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com