Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于结构向量数组的几个问题_C++_Arrays_Vector - Fatal编程技术网

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_数据;}