我正在尝试将数据推送到我的矢量,但我遇到了错误:
表达式必须具有类类型
这是我的代码:
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;
}
这个错误意味着什么?
答案 0 :(得分:1)
Observable
是egg[u]
。 point3*
是egg[u][v]
(这是一个包含3个浮点数的数组)。因此point3
是egg[u][v][N]
。 float
是内置类型,没有名为float
的成员函数,或者根本没有成员函数。该错误告诉您,由于它不是类类型,您不能使用点运算符来访问它的成员(因为它没有任何类型)。
如果您尝试将元素推回到push_back
向量上,它将如下所示:
egg
其中egg.push_back(something);
是something
类型的表达式。