c++ - 未定义的引用,试图创建类似结构的向量
问题描述
我尝试自己创建类似矢量的东西,所以我尝试为此创建一个结构。我经常得到“对'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 页,有适当的向量实现示例。
推荐阅读
- python - 对每一行的熊猫列进行排序
- apache-kafka - 执行更改 kafka 主题分区号,与其他主题发生 UnknownServerException
- twitter - Twitter:当我使用 https://github.com/JoeMayo/LinqToTwitter 作为身份验证用户时,我没有得到任何 webhook
- wordpress - 具有不同列表样式的 WordPress 菜单
- java - 试图在 url 读取 json 文件
- django - 使用 OneToOne 关系字段保存 Django 模型返回 Object has no attribute 'id' 错误
- android - RxJava2 - 使用错误消息链接多个可观察对象
- excel - VBA - 公式数组母鹿
- reactjs - 是否可以在不使用服务器端的 nodejs 的情况下使用 react 作为前端和 laravel 作为后端
- angular - 我无法通过制作该类的对象来访问我的模型类中定义的属性