【发布时间】:2012-02-25 14:11:25
【问题描述】:
我正在创建一个协议,我正在定义的方法的参数之一是CMTime*。我想转发声明 CMTime 而不是包含它。但是,我尝试过@class CMTime,它抱怨它在其他地方被重新定义为不同类型的符号。文档说它是一个结构。我已经尝试将其声明为
struct CMTime;
但它仍然在抱怨它不知道它是什么。
任何想法我做错了什么?
【问题讨论】:
-
不幸的是,它是使用匿名结构声明的。这意味着您要么必须复制整个声明(并希望它永远不会更改),要么只包含标题。
-
@ughoavgfhw 复制它不好(很可能,两个声明最终都在同一个 TU 中)。除此之外,我认为这是一个具体的答案,考虑到
CMTime'已声明。 -
@Justin 我只是建议它,因为他说他不会包含标题,但现在我想起来了,他在尝试创建时遇到了一个已经定义的错误一个类,这表明标题已经包含在内。如果有人可以解释,我可能会将其发布为答案。
-
@ughoavgfhw 大概是因为 OP 在使用时忘记或省略了
struct标签。void foo(CMTime*)与void foo(struct CMTime*). -
你应该接受贾斯汀的回答。
标签: objective-c c struct forward declare