C ++推送vector <mynewtype *>

时间:2017-11-06 01:42:54

标签: c++ pointers vector push

我正在尝试将数据推送到我的矢量,但我遇到了错误:

  

表达式必须具有类类型

这是我的代码:

float calcX(float u, float v) 
{
    return (((-90.0*pow(u, 5) + 225.0*pow(u, 4) - 270.0*pow(u, 3) + 180.0*pow(u, 2) - 45.0*u)*cos(pi*v)));
}

float calcY(float u, float v) 
{
    return (160.0*pow(u, 4) - 320.0*pow(u, 3) + 160.0*pow(u, 2) - 5.0f);
}

float calcZ(float u, float v) 
{
    return (((-90.0*pow(u, 5) + 225.0*pow(u, 4) - 270.0*pow(u, 3) + 180.0*pow(u, 2) - 45.0*u)*sin(pi*v)));
}

typedef float point3[3];
std::vector <point3*> createEggBuffor(int n=20) 
{   
    std::vector <point3*> egg;

    for (int u = 0; u < n; u++) {
        for (int v = 0; v < n; v++) {
            egg[u][v][0].push_back(calcX(static_cast<float>(u) / (n - 1), static_cast<float>(v) / (n - 1)));
            egg[u][v][1].push_back(calcY(static_cast<float>(u) / (n - 1), static_cast<float>(v) / (n - 1)));
            egg[u][v][2].push_back(calcZ(static_cast<float>(u) / (n - 1), static_cast<float>(v) / (n - 1)));            
        }
    }       
    return egg;
}

这个错误意味着什么?

1 个答案:

答案 0 :(得分:1)

Observableegg[u]point3*egg[u][v](这是一个包含3个浮点数的数组)。因此point3egg[u][v][N]float是内置类型,没有名为float的成员函数,或者根本没有成员函数。该错误告诉您,由于它不是类类型,您不能使用点运算符来访问它的成员(因为它没有任何类型)。

如果您尝试将元素推回到push_back向量上,它将如下所示:

egg

其中egg.push_back(something); something类型的表达式。