虽然包含标头,但C ++成员访问不完整类型

时间:2014-05-04 16:04:34

标签: c++ declaration member forward incomplete-type

我使用转发声明遇到了一个奇怪的问题。这是代码:

Torse类,torse.hpp

#ifndef _TORSE_
#define _TORSE_

class Animation;
enum frame_type;

class Torse : public Renderable
{
public:
const glm::vec3& getCurrentRotation(frame_type);
};
#endif

in torse.cpp:

#include "torse.hpp"
#include "animation.hpp"
const glm::vec3& Torse::getCurrentRotation(frame_type t)
{...}

现在在Animation类,animation.hpp

#ifndef __ANIMATION_H__
#define __ANIMATION_H__

class torse;

class frame {...};
class Animation {

public:
void generateInterpolation(torse& me);
};
#endif

在animation.cpp中:

#include "animation.hpp"
#include "torse.hpp"
void Animation::generateInterpolation(torse &me)
{
...
f1.rot[j] = me.getCurrentRotation(f1.type)[j];
...
}

正如你所看到的,我分享了enum frame_type和类Anmation和Torse但是我觉得我做得对,就像在animation.cpp一样,它应该知道如何解决是因为torse。 HPP ...

clang给了我这个错误:

src/animation.cpp:19:43: error: member access into incomplete type 'torse'
                            f1.rot[j] = me.getCurrentRotation(f1.type)[j];
                                        ^

任何人都有线索?

1 个答案:

答案 0 :(得分:2)

您定义了类型Torse,但是clang会抱怨名为torse的类型。

修复你的案子。