奇怪语法:作用域操作符(::)后面有星号
Odd syntax: asterisk after scope operator (::)?
帮助我理解下面的代码片段:
(foo)class Foo
{
public:
typedef void (MyType::*Handler)(SomeOtherType* t);
Foo(Handler handler) : handler_(handler) { }
private:
Handler handler_;
};
(mytype.h)class MyType
{
public:
MyType() { }
void fun1() { }
void fun2() { }
};
foo.h中的类型定义在这里声明了什么?我可以看到它是某种函数指针但是星号的意义是什么?它似乎是取消引用类型(?? ?),并以某种方式试图"附加"新类型定义的指针到MyType的类型(?!?)。
谁能给我点灯一下吗?Svoid (MyType::*)(SomeOtherType* t)
是指向MyType
类成员函数的指针,该函数接受一个参数(指向SomeOtherType
的指针),不返回任何值。
FAQ life条目
指向MyType
成员函数的指针,返回void
,并以指向SomeOtherType
的指针作为参数
相关文章:
- 未在作用域中声明unordered_map
- 有没有一种方法可以在编译时获得作用域类名
- C++quit()函数中可能存在作用域问题
- 未在此作用域OpenCV3.4中声明cvSaveImage
- 全局作用域中函数指针的赋值
- 在类函数中初始化外部作用域变量
- 不同作用域中的静态变量和全局变量
- 是同一作用域的函数部分中的函数调用
- 未在此作用域中声明的函数和变量 (C++)
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 将作用域枚举转换为基础类型
- 表达式必须具有完整或无作用域的枚举图
- 在构造函数中输入对象时C++类成员作用域
- 无法让"std::enable_if"适用于无作用域枚举
- 为什么不能直接引用作用域枚举类成员,而不能为无作用域枚举生成类成员?
- 函数未在作用域中声明 / 如何结合使用 header.h、header.cpp 和 main.cpp?
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- 如何在C++中访问作用域的变量输出?
- 奇怪语法:作用域操作符(::)后面有星号
- 用于c++ 11的Vim语法高亮显示不会混淆其他高亮显示.例如,类/命名空间作用域