struct Line {
NSUInteger x1;
NSUInteger x2;
};
// ...
- (Line)visibleLine;
上面的代码显然不起作用,因为Line不是有效类型。有什么建议吗?
答案 0 :(得分:8)
Objective-C是基于C而不是C ++的。在C
我们需要使用struct Line
,而在C ++中Line
则可以。
您可以这样做:
struct {
NSUInteger x1;
NSUInteger x2;
} Line;
// ...
- (struct Line)visibleLine{
}
此外,
typedef struct {
NSUInteger x1;
NSUInteger x2;
} Line;
// ...
- (Line)visibleLine;
答案 1 :(得分:4)
typedef struct {
NSUInteger x1;
NSUInteger x2;
} Line;
// ...
- (Line)visibleLine;
我最初(在其他答案之前)提出上述原因有明确原因:这就是Apple在自己的代码中如何做到的。这不是唯一的方法,但它是Apple的标准方式。它永远不会将struct
放在API的任何地方的原型中。
答案 2 :(得分:2)
在 C 中,struct Line
和Line
不同。您需要使用别名struct Line
来仅使用Line
来引用它。所以,
struct Line { /* ... */ }; // Make a struct.
typedef struct Line Line; // Make an alias.
这也可以立刻写出来。
typedef struct Line { /* ... */ } Line;
C ++ 会自动生成别名,但您应该将 C ++ 与 C 完全不同。不要混淆他们的名字。
答案 3 :(得分:0)
您错过了关键字 struct 。
- (struct Line)visibleLine;