目标 C - 使用局部变量声明的dispatch_apply无法在方法实现中编译C++
objective c - dispatch_apply with local variable declaration doesn't compile in C++ method implementation
代码
class XXX
{
vector<Record> getAll()
{
dispatch_apply(3, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) {
for (int j = 0; j < ...; ++j)
{ ... }
});
}
}
无法编译,提示" int XXX::j'不是class的静态成员"。关于块的文档说:"在块的词法范围内声明的局部变量,其行为与函数中的局部变量完全相同。"该文件的扩展名为。mm。我错过什么了吗?
您的代码是正确的,clang将编译它。一般来说,clang的c++块支持比gcc的好得多,如果可以的话,你会想要使用它。如果你需要使用gcc,有一个解决方法,使用::j来引用j。然而,这是非法的c++和clang会阻塞它,所以你可能想要使它有条件的编译器参与…
相关文章:
- 使用非递归插入方法实现 AVL 树
- C++方法实现:是否可以避免每次都键入类名?
- 如何使用吸气剂方法实现C++封装
- 在C++中使用克隆方法实现多晶型效果
- 使用本机 JNI 静态方法实现C++ Java 运行时错误
- 双向链表插入方法实现 - 正在搜索哪个节点
- 没有虚拟调度的默认方法实现
- C 构造函数和方法实现
- C :如何使用相同的数据类使用不同的方法实现
- 将同一类的方法实现放在不同的对象文件中
- 私有方法实现编译错误
- 使用公共命名方法实现非公共赋值运算符
- 使用 SFINAE 在 Clase 模板中选择不同的方法实现
- 如何根据方法实现的声明顺序对其进行排序
- 使用一个方法实现不同类型赋值的优雅方式,并且没有警告
- 在运行时选择方法实现
- 将参数传递给c++ CORBA方法实现
- 静态constexpr方法实现导致GCC错误
- 包括c++中的头文件(类定义和方法实现)
- 如何在swig生成的代理类中更改特定的方法实现