我尝试创建类似矢量的东西,所以我尝试为此创建一个结构。我经常得到“未定义的'float_vector :: val''引用,这是我无法解决的。
#include <iostream>
using namespace std;
struct float_vector
{
static float val[50];
int i =0;
float* pointer()
{
return val;
}
void push_back2(float value)
{
val[i] = value;
i++;
}
int size2()
{
return i;
}
float at2(int ati)
{
return val[ati];
}
};
int main()
{
float_vector aa, some, tmep;
some.push_back2(5);
some.push_back2(5.5);
some.push_back2(5.779);
cout << (some.pointer())[1];
cout << some.size2();
int u, p;
return 0;
}
答案 0 :(得分:-2)
因为我会详细说明答案。静态在类范围之外定义,因此要编译它,添加以下行以将静态引入编译器符号表:
float float_vector::val[50];
正如其他人指出这是糟糕的设计,你不应该这样写你的sudo矢量容器。 Val将由您班级的所有实例共享,因此数据将被覆盖,您将无法保持大小和容量。大小也是固定的,所以这并没有太多的矢量提供。多数说,你应该使用动态内存进行底层存储,最好使用RAII来检查良好的示例实现检查&#34; C ++编程语言&#34; c ++ 11版本,第375页,有适当的矢量实现示例。