更改类中的矢量值时出错

ked*_*ked 0 c++ variables double class vector

我试图使用类的函数更改向量中的值,该向量是类中的变量.当我编译时,我得到以下错误指向"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++;
    }
Run Code Online (Sandbox Code Playgroud)

Jes*_*ood 6

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) {}
Run Code Online (Sandbox Code Playgroud)

您可能还希望在向其check[c]分配任何内容之前确保向量中的有效位置.