错误:在 C++ 目标 c 混合'self'使用未声明的标识符
error: Use of undeclared identifier 'self' c++-objective c mixing
我目前正在使用ue4完成iOS游戏。我正在使用一些特定的iOS代码,并尝试使用"self"变量调用方法
void Aaccessactorios::Shareoption() {
[self Sharebutton];//ios
}
代码位于预处理器标签内 #if PLATFORM_IOS 和 #endif
我想我已经在 cpp 文件的开头声明了 self 变量:
-(id)init
{
self = [super init];
return self;
}
其他论坛提到虚幻引擎最后编译了所有的cpp .mm,所以我认为这不是问题所在。
self 变量在目标 c 部分周围使用,因此它对我的代码至关重要。如何正确混合代码并声明我的 self 变量?
谢谢
编辑:这是我尝试重新创建 https://answers.unrealengine.com/questions/422323/callback-from-objective-c-back-to-the-c-layer.html 的部分
我一直混合C++和Obj-C。Obj-C 类实例与C++实例不同。C++类实例具有this
.没有self
.Obj-C 类实例具有self
个 。您可以在此处阅读有关它的更多信息:
区别 b/w 目标 C 的自我和C++这是吗?
假设从你写的内容来看,你有一个C++类Aaccessactorios
.目前尚不清楚谁定义了Sharebutton
.如果它在C++类中,则将其称为
this->Sharebutton();
或者干脆
Sharebutton();
Sharebutton
属于 Obj-C 类,则需要让C++具有指向 Obj-C 类实例的指针,或者将其传递到函数中。后者的一个例子是:
void Aaccessactorios::Shareoption(ObjCClassObj *obj) {
[obj Sharebutton];//ios
}
在该代码参考链接中,您可以看到他们实际上执行了前者。
class IOSMediaPlayerController
{
public:
IOSMediaPlayerController();
~IOSMediaPlayerController();
void startPlayback();
void stopPlayback();
void callbackFunc();
#if PLATFORM_IOS
IOSMediaPlayerControllerObj *playerObj;
#endif
};
在这里,您可以看到playerObj
是对 Obj-C 对象的引用(指针(。这是在构造函数中创建
IOSMediaPlayerController::IOSMediaPlayerController()
{
#if PLATFORM_IOS
playerObj = [[IOSMediaPlayerControllerObj alloc] init];
#endif
}
然后被调用
void IOSMediaPlayerController::startPlayback()
{
#if PLATFORM_IOS
[playerObj startPlayback];
#endif
}
注意示例代码不调用self
,而是调用构造函数创建的实例playerObj
。
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- Google protobuf 时间戳未声明标识符,在 Windows 上具有C++
- 我的函数调用 (C++) 中的未声明标识符
- 具有继承的未声明标识符(运算符 ostream)
- 无法确定 IDE 在 C++ 中说出未声明标识符的原因
- 错误 C2065:'lO':用于声明向量值的未声明标识符?
- 可变参数模板的未声明标识符
- 动态变量上的c++MACRO未声明标识符
- 指向对象的指针的未声明标识符向量
- 简单C++程序上的多个未声明标识符
- C++类"未声明标识符"
- 计算文本文件中的整数数(使用 fin>>x 的未声明标识符)
- 编译器错误 xcode 未声明标识符 C++
- 直接 X 11 纹理 FX 文件错误 X3004 未声明标识符"input"
- GCC 未声明标识符"_asm"
- ios_base类的C++未声明标识符
- 未声明标识符SQL_SS_TABLE
- 使用arrayfire的未声明标识符
- 未声明标识符和标识符未定义是什么意思?如何修复错误
- 在 MacOS 上使用 OpenMPI C++语法时未声明标识符'MPI'