gpt4 book ai didi

Objective-C++ block 与 Objective-C block

转载 作者:行者123 更新时间:2023-12-05 00:37:48 26 4
gpt4 key购买 nike

在 Objective-C 中,我有有效的代码:

测试二.h:

@interface TestTwo : NSObject
-(void)test;
@end

测试二:
@implementation TestTwo
-(void)test
{
void (^d_block)(void) =
^{
int n;
};
}
@end

我真正想要的是一个Objective-C++ 类,它定义了一个类似于 test 的方法。 .这是简化,但说明了意图。所以,在 Objective-C++ 中,我有:

测试.h:
class Test
{
public:
void TestIt();
};

测试.mm:
#include "Test.h"

void Test::TestIt()
{
void (^d_block)(void) =
^{
int n;
};
}

我收到以下错误:

error: 'int Test::n' is not a static member of 'class Test'.



如果我删除 int n;没有错误。我如何定义 n在这种情况下的块内?

最佳答案

这是 a GCC bug filed under radar #8953986 .您可以使用 Clang/LLVM 2.0+ 按原样编译代码,也可以将块变量放在全局 namespace (即 int ::n )中并使用 GCC。请注意,在这种情况下使用全局命名空间是无效的 C++ 并且 Clang/LLVM 2.0+ 不会编译它。

关于Objective-C++ block 与 Objective-C block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525928/

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