类中的向量(没有类类型)

时间:2014-05-23 16:09:20

标签: c++ class vector

我在课堂上遇到了一些麻烦。

#include <vector>
using namespace std;

class sth {
    vector<int> tab();
    public:
        void add(int i);
};

void sth::add(int i){
    tab.push_back(i);
}

int main() {
    sth a;
    a.add(10);
    return 0;
}

这个简单的代码会导致11 5 [Error] '((sth*)this)->sth::tab' does not have class type 有什么想法发生了什么?

2 个答案:

答案 0 :(得分:6)

以下实际上是一个函数声明:

vector<int> tab();

如果您要申报std::vector,则应为:

vector<int> tab;

答案 1 :(得分:1)

  

这个简单的代码导致了   11 5 [Error] '((sth*)this)->sth::tab' does not have class type
  有什么想法发生了什么?

您使用的是类成员函数声明:

vector<int> tab();

我可以从您的add()方法实现中读取,您想要声明(并初始化?)类成员变量 。为此,声明语法如下所示:

vector<int> tab;

要初始化类成员变量(甚至使用它们的默认构造函数),必须使用构造函数方法成员初始化列表来定义

sth::sth() : tab() {}

对于当前的c ++标准,您还可以使用以下形式之一直接初始化

vector<int> tab{};
vector<int> tab{1,2,3,4,5};
vector<int> tab = vector<int>();