Reputation: 25265
"VoiceName" is an enum, declared like this:
enum VoiceName {
PAD_RHYTHM,
PAD_RHYTHM2,
PAD_RHYTHM3,
PEEPERS,
ATMOSPHERE,
IMPULSE,
FAST_PULSE,
HAIRYBALLS_PADS,
KICK
};
The compiler doesn't seem to like me using it in a method signature like this:
-(void)pulseFiredWithSamplePosition:(float)position from: (VoiceName) voiceName;
It tells me expected ')' before 'VoiceName'. What's going on here?
Upvotes: 3
Views: 3448
Reputation: 2312
As of iOS6 and Mac OSX 10.8 you can use the NS_ENUM macro
typedef NS_ENUM(NSUInteger, VoiceName)
{
PAD_RHYTHM,
PAD_RHYTHM2,
PAD_RHYTHM3,
PEEPERS,
ATMOSPHERE,
IMPULSE,
FAST_PULSE,
HAIRYBALLS_PADS,
KICK
};
NSUInteger can be replaced with whatever type your defining, then you could use your method as specified.
Upvotes: 2
Reputation: 23398
Obj-C is based on C, not C++. C requires the enum keyword, as quixoto showed. C++ lets you omit it.
Upvotes: 1
Reputation: 71048
You can't use it "bare" like that without also specifying that it's an enum:
-(void)pulseFiredWithSamplePosition:(float)position from: (enum VoiceName) voiceName;
should work. If you want to avoid specifying it like that, you can typedef it:
typedef enum _VoiceName {
PAD_RHYTHM,
....
} VoiceName;
then you'll be able to use just VoiceName
as the argument type.
Upvotes: 8