C++ dispatch#u应用局部变量声明不';t在C+中编译+;方法实现

C++ dispatch#u应用局部变量声明不';t在C+中编译+;方法实现,c++,objective-c,ios,grand-central-dispatch,C++,Objective C,Ios,Grand Central Dispatch,代码 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) { ... } }); } } XXX类 { 向量getAll() {

代码

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)
        { ... }
      });
    }
}
XXX类
{
向量getAll()
{
调度应用(3,调度获取全局队列(调度队列优先级默认为0),^(大小i){
对于(int j=0;j<…;++j)
{ ... }
});
}
}

不编译,表示“'intxxx::j'不是'class'的静态成员”。表示“在块的词法范围内声明的局部变量,其行为与函数中的局部变量完全相同。”文件扩展名为.mm。我错过什么了吗

您的代码是正确的,clang将编译它。一般来说,clang的C++块支持比GCC的要好很多,如果可以的话,你想使用它。如果您需要使用gcc,那么可以使用::j来引用j。然而,非法的C++和CLAN会阻塞它,所以你可能想使它有条件地参与编译器……

你的代码是正确的,CLAN将编译它。一般来说,clang的C++块支持比GCC的要好很多,如果可以的话,你想使用它。如果您需要使用gcc,那么可以使用::j来引用j。但是,非法的C++和CLAN会阻塞它,所以你可能想使它有条件地参与编译器……/P>