C++ 关于结构向量数组的几个问题
我昨天发了一篇关于这个的帖子,但这是一个完全不同的问题。我不确定我是应该提出一个新问题,还是只回答老问题,但问题来了 基本上,我正在设置结构的向量数组,如下所示C++ 关于结构向量数组的几个问题,c++,arrays,vector,C++,Arrays,Vector,我昨天发了一篇关于这个的帖子,但这是一个完全不同的问题。我不确定我是应该提出一个新问题,还是只回答老问题,但问题来了 基本上,我正在设置结构的向量数组,如下所示 class Debugger : public Ogre::SimpleRenderable { struct DebugVertex { Ogre::Vector3 v; unsigned int color; }; typedef std::vector<Deb
class Debugger : public Ogre::SimpleRenderable
{
struct DebugVertex
{
Ogre::Vector3 v;
unsigned int color;
};
typedef std::vector<DebugVertex> Buffer;
protected:
Buffer mLineBuffer;
类调试器:公共Ogre::SimpleRenderable
{
结构调试顶点
{
食人魔:矢量3 v;
无符号整数颜色;
};
typedef std::向量缓冲区;
受保护的:
缓冲器;
问题发生在代码中,例如
姆林布弗保留地(128);报告它不是Debugger::DebugVertex的成员。这适用于所有向量操作,如reserve、empty、ptr、size等。它们都存在,但它正在结构中查找它们。我应该如何访问它们?编译器的确切错误是什么?我猜
DebugVertex
不符合接口要求需要包含在STL容器中,如std::vector
,可能是因为Ogre::Vector3
需要工作
您可以包含
Ogre::Vector3
的声明吗?编译器的确切错误是什么?我猜DebugVertex
不符合包含在STL容器(如std::vector
)中所需的接口,可能是因为Ogre::Vector3
需要工作
您是否可以使用私有结构包含
Ogre::Vector3
的声明?如果您的typedef使用私有结构,调试器类之外的任何代码都不会编译
std::vector不是类的一部分
要么将std::vector设置为友元类(未测试,必须检查),要么将结构公开。使用私有结构的typedef,调试器类之外试图使用它的任何代码都不会编译 std::vector不是类的一部分
或者使std::vector成为朋友类(未测试,必须检查)或者干脆公开你的结构。如果你删除typedef并直接声明:std::vector mlinebuffer你能显示一些相关的诊断输出吗?你能告诉我们你是如何尝试执行
保留
?这是头文件/源文件-你是否尝试添加#include
?如果你删除typedef并声明direc怎么办tly:std::vector MLINebuffer您能展示一些相关的诊断输出吗?您能向我们展示一下您如何尝试执行保留
?这是头文件/源文件-您是否尝试添加#包含
?出于某种原因,我只是重新编译,没有做任何更改(以恢复错误)除了几个简单的错误,它编译得很好。我不知道以前是什么导致了这些错误,但由于某种原因它们已经消失了。不过我想知道,utArray(我用vector替换的)使用了mLineBuffer.ptr();我在vector中找不到等价的函数,不是吗?@Brett:utArray的ptr方法做了什么?如果我猜ptr返回指向内部数组的指针是正确的,那么您可能只是在寻找&mLineBuffer[0]
。typedef t*pointer;pointer m_data;UT_INLINE pointer ptr(void){return m_data;}出于某种原因,我只是重新编译,没有做任何更改(以恢复错误),它编译得很好,只减去了几个简单的错误。我不知道以前是什么导致了这些错误,但出于某种原因,它们消失了。不过,我想知道utArray(我用vector替换的内容)使用了mLineBuffer.ptr();我在vector中找不到等价的函数,不是吗?@Brett:utArray的ptr方法做了什么?如果我猜ptr返回指向内部数组的指针是正确的,那么您可能只是在寻找&mLineBuffer[0]
。typedef t*pointer;pointer m_data;UT_INLINE pointer ptr(void){返回m_数据;}