如何在c风格的类声明中使用NSInteger

时间:2011-11-22 16:18:11

标签: c++ cocoa objective-c++

我有一个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)

2 个答案:

答案 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