我使用转发声明遇到了一个奇怪的问题。这是代码:
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];
^
任何人都有线索?
答案 0 :(得分:2)
您定义了类型Torse
,但是clang会抱怨名为torse
的类型。
修复你的案子。