如何在数组中获取一个Object数组? C ++

时间:2015-12-08 16:03:26

标签: c++ arrays pointers

atm我试图编写一个rubics多维数据集,但我无法让它运行起来。 所以我得到了我的班级,名为" littlecube"。它得到了一个顶点数组(每边4个* 6个边)。数组已经填充了正确的值。所以我想象一下rubics立方体的每个立方体作为一个有24个顶点的对象。是否有另一种方法来声明cpp文件中的三个浮点数?想到立方体作为对象。就像在java或c#中一样。说实话,我是C ++中的一个大菜鸟。

littleCube.h:

#pragma once
class littleCube
{   
public:
    littleCube(void);
    littleCube(const int positionX,const int positionY,const int positionZ);
    ~littleCube(void);

    void calculateVertices(void);
    void rotateVertical(const float rotationAngle);
    void rotateHorizontal(const float rotationAngle);
    void printLittleCube(void);
    void printPosition(void);
    void printRotation(void);
    void printVertices(void);
    float* getMyVertices(void);
};

littleCube.cpp:

#include "littleCube.h"
#include <iostream>
#include <math.h>

//Position of each Cube
float f_myPosition[4];
//Rotation of each Cube
float f_myRotation[4][4];
//All Vertices of a cube
float f_myVertices[24][3];

using namespace std;

//default constructor
littleCube::littleCube(void)
{
}

float* littleCube::getMyVertices(void)
{
    return &f_myVertices[0][0];
}

之后我创建了一个三维的littleCubes数组,我想访问每个立方体的顶点字段。

#include "littleCube.h"

typedef struct BasicVertex
{
    float position[3];
    uint32_t color;
} BasicVertex;

static BasicVertex  *s_basicVertices= NULL;
littleCube bigCube[3][3][3];

int main( void )
{
    for(int x = 0; x < 3; x++)
   {
       for(int y = 0; y < 3; y++)
       {
           for(int z = 0; z < 3; z++)
           {
               bigCube[x][y][z] = littleCube::littleCube(x+1,y+1,z+1);
           }
       }
   }
   createGmxData();
}

因此,在以下代码中,我在以下行收到错误:
&#34; s_basicVertices [i] .position [0] =&amp; pointer [cubeVertices] [0];&#34;

void createGxmData( void )
{
    s_basicVertices = (BasicVertex *)graphicsAlloc( ..., numVertices * 6 *sizeof(BasicVertex), 4, ..., ...);

    int x,y,z,i = 0;

    while(true)
    {
        float* pointer = bigCube[x][y][z].getMyVertices();
        for(int cubeVertices = 0; cubeVertices < 24; cubeVertices++)
        {
            s_basicVertices[i].position[0] = &pointer[cubeVertices][0]; //x
            s_basicVertices[i].position[1] = &pointer[cubeVertices][1]; //y
            s_basicVertices[i].position[2] = &pointer[cubeVertices][2]; //z
            i++;
        }
        z++;
            if(z == 3)
            {
                z = 0;
                y++;
                if( y == 3)
                {
                    y = 0;
                    x++;
                    if( x == 3)
                        break;
                }
            }

    }
}

我现在遇到的问题是&#34;错误143:表达式必须具有指针对象类型&#34;而且我不知道为什么。以为我现在有一个指向每个立方体的f_myVertices的指针。

我没有显示整个代码的原因是它是psVita的开发工具包,如果我允许显示代码,我不会感到害羞。< / p>

非常感谢 本

0 个答案:

没有答案