关于std::__1::array无add成员及函数调用不匹配的报错咨询
搞定你的C++编译错误
嘿,这俩错误都是C++容器使用里的常见坑,我帮你逐个拆解:
第一个错误:std::__1::array 找不到 add 成员
问题核心很直接:std::array 是固定大小的容器,从设计上就没有 add() 这个成员函数。它的大小在声明时就固定死了,没法动态往里面加元素,只能通过下标(比如 output[0])或者迭代器修改已有的位置。
如果你的需求是动态添加元素,赶紧把 output 的类型换成 std::vector——这才是支持动态扩容的序列容器,用 push_back() 就能加元素,写法是:
output.push_back(R1.voltage());
要是你非得用 std::array,那得提前确定好它的大小,然后用下标赋值,比如:
// 假设你声明的是std::array<double, 3> output; output[0] = R1.voltage(); // 后续元素就用output[1]、output[2]这类下标来赋值
第二个错误:函数调用不匹配
这个错误基本是第一个问题连锁出来的:
- 你调用了
std::array根本没有的add()方法,编译器找不到这个函数,自然报“没有匹配的函数调用”; - 还有一种可能是
R1.voltage()的返回值类型,和output存储的元素类型不兼容。比如output存的是int,但voltage()返回的是double,这种情况要么做类型转换,要么调整容器的元素类型。
举个例子,如果 voltage() 返回的是浮点型,你的容器得这么声明:
std::vector<double> output; // 或者std::array<double, 5> output; 这里的5是你要的固定大小
要是能把你的头文件和 main.cpp 代码贴出来,我能更精准地帮你排查细节,但就目前的错误信息来看,上面的方案应该能解决核心问题啦。
内容的提问来源于stack exchange,提问作者Rıdvan Küçük
相关产品推荐
相关产品推荐

