【问题标题】:XCode compilation error for C++ codeC++ 代码的 XCode 编译错误
【发布时间】:2011-06-07 04:44:45
【问题描述】:

我正在尝试将我的 C++ 类用于 iPhone 应用程序。我在 XCode 中遇到了 2 个我不太理解的编译错误。这是第一个,在这个头文件myApps.h中,我声明了一个class myApps和一个struct PointF

#pragma once
struct PointF {
    float x;
    float y;
};   // **compilation error message here :Multiple types in one declaration**

class myClass   { 
...
}

第二个错误也在头文件中,

#pragma once
class myClass1;
class myClass2;

class MyClass   
{
public:
  MyClass(void *view);
 ~MyClass();  

  virtual void Draw(myClass1 *c1); 
 //Error: Candidate is virtual void MyClass::Draw(myClass1 *)

  virtual void Move(myClass2 c2[], myClass1 *c1, void *callback);
  //Error: Candidate is virtual void MyClass::Move((myClass2, myClass1*, void*)
};

感谢您的帮助

【问题讨论】:

  • 您确定它没有在某些 cpp 文件中生成错误,然后参考这些位置吗?
  • 请使用编辑框上方的{} 使用正确的格式。也让问题更清楚。
  • 你说你声明class myApps,你去声明class myClass,然后在另一个文件中声明class MyClass。这是导致问题的确切代码吗?
  • 翻译单元是什么样的?这些错误几乎总是由类声明中缺少分号引起的。

标签: iphone c++ compilation


【解决方案1】:

好的,我不知道这是否对你有帮助,但是,据我所见:

myClass 的末尾应该有一个分号:

class myClass   { 
...
};

对于你类的最后一个函数下面的Candidate is virtual void MyClass::Draw(myClass1 *)

using myClass1::Draw;
using myClass1::Move;

因为您可能在 myClass1 中有一个 Draw 和 Move 方法...More on it here. 很难弄清楚,因为我看不到 myClass1 和 myClass2 中的内容。

【讨论】:

    【解决方案2】:

    只需检查您的文件扩展名是 .m 还是 .mm 对于 C++ 文件,它必须是 .mm 扩展名。

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多