我有一个c风格的类声明:
#pragma once
class CSound
{
private:
NSInteger bufferID;
public:
CSound(const char* fileName);
~CSound();
static void init();
void play();
};
编译器说 NSInteger没有命名类型。
如果我把“NSInteger bufferID;”在.mm文件中(不在.h中)它可以工作。我做错了什么?
修改
由于我仍然没有解决方案,我做了一个快速的脏丑陋修复:
在.h文件中,在类定义中
void* pBufferID;
并在.mm文件中
// constructor
pBufferID = new NSUInteger;
// destructor
delete (NSUInteger*)pBufferID;
// everywhere I use it
*((NSUInteger*)pBufferID)
答案 0 :(得分:2)
您没有在自己的头文件(可能是Foundation.h)中包含定义NSInteger
的标头。大概你 在你的.mm
文件中这样做了。只需将#import
或#include
指令移到标题中即可。
答案 1 :(得分:0)
你有:
#import <UIKit/UIKit.h>
(iOS)
或
#import <Cocoa/Cocoa.h>
(Mac OS)
..导入.h文件的顶部?
您确定所有框架都与您的项目相关联吗?
foundation.framework
appKit.framework
UIKit.framework