通过 Box2d 中的 NSNotificationCenter 发送类对象C++。错误:没有从 'MyContact' 到 'id' 的可行转换
Sending C++ class object through the NSNotificationCenter in Box2d. Error: No viable conversion from 'MyContact' to 'id'
我尝试在box2d *cocos2d*中实现联系人侦听器。我想在PostSolve函数中集成NSNotificationCenter,但是当我尝试指向对象:参数时,我遇到了错误:
No viable conversion from 'MyContact' to 'id'
如何通过 NSNotificationCenter 发送 MyContact 对象?
MyContactListener 类
//
// MyContactListener.m
// Box2DPong
//
// Created by Ray Wenderlich on 2/18/10.
// Copyright 2010 Ray Wenderlich. All rights reserved.
//
#import "MyContactListener.h"
#import "ConfigMacro.h"
MyContactListener::MyContactListener() : _contacts(),_contactsObjects(){}
MyContactListener::~MyContactListener() {}
void MyContactListener::BeginContact(b2Contact* contact) {
b2Body *bodyA = contact->GetFixtureA()->GetBody();
b2Body *bodyB = contact->GetFixtureB()->GetBody();
if(bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL)
{
MyContact myContact = { contact->GetFixtureA(), contact->GetFixtureB() };
_contacts.push_back(myContact);
}
}
void MyContactListener::EndContact(b2Contact* contact) {
MyContact myContact = { contact->GetFixtureA(), contact->GetFixtureB() };
std::vector<MyContact>::iterator pos;
pos = std::find(_contacts.begin(), _contacts.end(), myContact);
if (pos != _contacts.end()) {
_contacts.erase(pos);
}
}
void MyContactListener::PreSolve(b2Contact* contact, const b2Manifold* oldManifold) {}
void MyContactListener::PostSolve(b2Contact* contact, const b2ContactImpulse* impulse) {
b2Body *bodyA = contact->GetFixtureA()->GetBody();
b2Body *bodyB = contact->GetFixtureB()->GetBody();
if(bodyA->GetUserData() != NULL && bodyB->GetUserData() != NULL)
{
int32 count = contact->GetManifold()->pointCount;
float32 maxImpulse = 0.0f;
b2Vec2 collision;
for (int32 i = 0; i < count; ++i) {
maxImpulse = b2Max(maxImpulse, impulse->normalImpulses[i]);
if (i == 0) {
b2WorldManifold worldManifold;
contact->GetWorldManifold(&worldManifold);
collision = worldManifold.points[0];
}
}
MyContact myContact = { contact->GetFixtureA(), contact->GetFixtureB(), maxImpulse, collision };
[[NSNotificationCenter defaultCenter] postNotificationName:kReceivedImpulse object:myContact userInfo:nil];
}
}
object:
参数应该是指向 Objective-C 对象的指针 - 您正在尝试传递看起来像结构的内容。
相关文章:
- 从函数角度看ID到文件路径的内部与外部映射
- 通过组合不同的类型来创建唯一的id
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- FFMPEG配置文件级别id大小无效
- 方法内部但循环仍得到预期的不合格id错误C++
- 如何获取 GLFW 窗口 ID?
- 当简单捕获中的标识符显示为参数的声明符 ID 时,没有编译器诊断
- 显示数组中的学生 ID 和最高分
- C++:"("令牌"之前有预期的非限定 id 指向类中成员函数的指针
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- Xcode 9.4.1 中的 Apple Mach-O 链接器 (id) 错误
- 错误:令牌 { '{' 之前应存在非限定 ID
- 断言"id < 0"在Qt ActiveX中失败
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 如何根据两个因素组织向量:id 和数量?(C++)
- 在返回 0 之前应为非限定 ID
- Direct3D 11 - HLSL - 获取顶点索引 ID
- 编译时检查特征专用化是否具有唯一 ID
- DCMTK 了解"DIMSE 没有有效的演示上下文 ID"错误
- 通过 Box2d 中的 NSNotificationCenter 发送类对象C++。错误:没有从 'MyContact' 到 'id' 的可行转换