[英]Undefined reference, trying to create vector like struct
我试图创建类似矢量的东西,所以尝试为此创建一个结构。 我经常得到“无法解析的'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;
}
由于投票不足,我将详细说明答案。 静态变量是在类范围之外定义的,因此,只需对其进行编译,请添加以下行以将您的静态变量引入编译器符号表:
float float_vector::val[50];
正如其他人指出的那样,这是糟糕的设计,因此您不应以这种方式编写sudo向量容器。 Val将由您的类的所有实例共享,因此数据将被覆盖,并且您将无法保持大小和容量。 而且大小是固定的,因此这与向量提供的功能无关。 话虽这么说,您应该使用动态内存进行基础存储,最好使用RAII,以检查良好的示例实现,请参见“ C ++编程语言” c ++ 11版,第375页,其中有矢量实现的正确示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.