昨天我发了一篇关于这个的帖子,但这是一个完全不同的问题。不确定我是应该提出一个新问题,还是只回复旧问题,但现在就去了。
基本上我正在设置结构的矢量数组,如下所示。
class Debugger : public Ogre::SimpleRenderable
{
struct DebugVertex
{
Ogre::Vector3 v;
unsigned int color;
};
typedef std::vector<DebugVertex> Buffer;
protected:
Buffer mLineBuffer;
问题出现在代码中......例如......
mLineBuffer.reserve(128);报告它不是Debugger :: DebugVertex的成员。这适用于所有向量操作,例如reserve,empty,ptr,size等。它们都存在,但它在结构中寻找它们。我该如何访问这些?
答案 0 :(得分:1)
你的typedef使用私有结构,Debugger类之外的任何试图使用它的代码都不会编译。
std :: vector不属于您的班级......
使std :: vector&lt; DebugVertex&gt;朋友班(没有考试,必须检查)或只是公开你的结构。
答案 1 :(得分:0)
确切的编译错误是什么?我的猜测是DebugVertex
不符合包含在std::vector
之类的STL容器中所需的接口,可能是因为Ogre::Vector3
需要工作。
您可以加入Ogre::Vector3
的声明吗?