繁体   English   中英

未定义的引用,试图创建类似struct的向量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM