更改类中的矢量值时出错
Error when changing a vector value in a class
本文关键字:出错 更新时间:2023-10-16
我正试图使用类的函数来更改向量中的值,该向量是类中的变量。当我编译时,我得到以下错误指向"check[c]=cval;"行:
-
错误C3867:"acc::check":函数调用缺少参数列表;使用'&acc::check'以创建指向成员的指针
-
错误C2109:下标需要数组或指针类型
注意:我已经在程序的其他地方将C初始化为0。它可能会抛出错误,因为我给地址的是一个变量而不是整数,但当我用整数替换变量时,我仍然会得到相同的错误。
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <cstring>
using namespace std;
class acc
{
public:
void add_Cval(double cval);
private:
vector<double> check(); //vector of all checks
int c; //loop marker for cvals
};
void acc::add_Cval(double cval)
{
check[c] = cval;
c++;
}
vector<double> check();
并不是你想象的那样。你刚刚声明了一个名为check
的函数,它返回一个vector<double>
。像这样去掉括号vector<double> check;
。
此外,你的vector<double>
是空的,如果你想做check[c] = cval;
(或者使用check.push_back(cval);
),你需要给它一些空间,在构造函数中分配空间(使用"初始化列表",因为这就是它们的用途):
示例:
acc(int vecsize) : check(vecsize), c(0) {}
在为check[c]
分配任何内容之前,您可能还需要确保它在向量中是一个有效的位置。
check
是一个方法,而不是数据成员,因此需要调用它-check()
。
void acc::add_Cval(double cval)
{
check()[c] = cval;
c++;
}
或使其成为数据成员:
class acc
{
public:
void add_Cval(double cval);
private:
vector<double> check; //vector of all checks
int c; //loop marker for cvals
};
编译器正在寻找一个名为check()
的函数,该函数返回double类型的向量。
private:
vector<double> check(); // A private function that returns a vector of type <double>
需要:
private:
vector<double> check; // A private data member
相关文章:
- 访问者访问变体并返回不同类型时出错
- 在Linux for Windows上编译C++代码时出错
- 读取文件的最后一行并输入到链接列表时出错
- 重载操作程序时出错>>用于类中的字符串 memebr
- 调用专用模板时出错"no matching function for call to [...]"
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- LINK 尝试使用 OpenSSL evp aes 256 c++ 时出错
- 在Google Kick start中提交时出错
- 在c++中访问int到类对象的映射时出错
- 分段错误当我试图运行程序时出错
- 使用dynamic_cast和构造函数时出错
- CHECK(调用)函数在Google Colab中出错
- 用pybind11包装C++抽象类时出错
- 为x86而非x64编译时出错
- 从R调用C++函数并对其进行集成时出错
- 这个函数哪里出错了
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 为重写std::exception的库生成swig接口时出错
- 导入/导出变量时出错
- PrintWindow函数在notepad.exe中出错