0

我会简短地说。

我有 2 个类:AppleOrange,如下所示:

Apple.hApple.c为空白)

#ifndef APPLE_H_
#define APPLE_H_

class Apple {};

#endif /* APPLE_H_ */

Orange.h

#ifndef ORANGE_H_
#define ORANGE_H_

#include "Apple.h"

class Orange {
public:
    Orange();
    virtual ~Orange();
    operator Apple ();
};

#endif /* ORANGE_H_ */

Orange.cpp

#include "Orange.h"

Orange::Orange() {
    // TODO Auto-generated constructor stub

}

Orange::~Orange() {
    // TODO Auto-generated destructor stub
}

Orange::operator Apple() {
    Apple y;
    return y;
}

正如这些,这些作品很棒。

但是当我添加#include "Orange.h"到时Apple.h,我得到了'operator Apple' is not a recognized operator or type错误。

如下:

#ifndef APPLE_H_
#define APPLE_H_

#include "Orange.h"

class Apple {};

#endif /* APPLE_H_ */

造成了什么问题#include "Orange.h"

4

1 回答 1

1

这是因为你现在有一个循环依赖:Orange.h取决于Apple.h哪个取决于等Orange.h

Orange.h头文件中声明类可能就足够了Apple

// Tell the compiler that there is a class named `Apple`
class Apple;

class Orange {
public:
    Orange();
    virtual ~Orange();
    operator Apple ();
};

然后在Orange.cpp源文件中包含Apple.h头文件。

于 2013-04-15T10:22:49.440 回答