【问题标题】:Unknown type name 'class'; did you mean 'Class'? AurioTouch未知类型名称“类”;您指的是 'Class' 吗? AurioTouch
【发布时间】:2012-03-14 00:37:06
【问题描述】:

我正在尝试将代码从 AurioTouch 项目移动到我的项目中。 但是我有很多错误:

Unknown type name 'class'; did you mean 'Class'?

例如,在文件 FFTBufferManager.h 中:

#include <AudioToolbox/AudioToolbox.h>
#include <libkern/OSAtomic.h>

#include "SpectrumAnalysis.h"

class FFTBufferManager
{
public:
    FFTBufferManager(UInt32 inNumberFrames);
    ~FFTBufferManager();

我尝试将编译器更改为 LLVM GCC 4.2,但它给出了很多其他错误:

Expected '=', ',', ';', 'asm' or '__attribute__' before 'FFTBufferManager'

我做错了什么?

【问题讨论】:

  • 您很可能在SpectrumAnalysis.h 中忘记了;
  • 我想如果你删除包含它会起作用?在开始更正之前尝试更正这些文件。
  • SpectrumAnalysis.h 是正确的。 AurioTouch 项目编译并运行良好。但是当我将它的文件添加到我的项目中时,就会弹出很多错误。
  • 看起来 xcode 不明白它是 c++ 代码。
  • FFTBufferManager 源文件的扩展名是什么? cpp, c, m, mm ?

标签: c++ objective-c xcode objective-c++


【解决方案1】:

要混合 C++ 和 Objective-C,您需要使用 .mm extension。但是,如果您的类只是 C++(并且仅包含 C/C++ 头文件),那么您可以使用普通的 .cpp 扩展名。

.mm
具有此扩展名的源文件可以包含除 Objective-C 和 C 代码之外的 C++ 代码。这个扩展应该 仅当您实际引用 C++ 类或功能时才使用 你的 Objective-C 代码。

【讨论】:

  • .h 文件呢,在哪里定义了 c++ 类?应该改成哪个扩展名?
  • @peetonn .h 很好,因为它们没有被编译。您也可以免费使用 .hh 和 .hpp。
  • @Joe 你能在 datil 中提供解决方案吗,因为我有同样的问题
  • @Harsh 解决方案是将 .m 扩展名更改为 .mm
  • @Joe 感谢您的回复乔,我做了同样的事情,但仍然得到同样的错误!我不知道如何解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2021-06-01
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
相关资源
最近更新 更多