在数组中将数组初始化为C ++中的成员变量时出错

时间:2018-03-27 04:51:04

标签: c++ arrays class variables member

我刚刚开始学习C ++而无法弄清楚我做错了什么。

我正在尝试构建一个类“Holder”,它包含一个多达100个另一个类“Obj”的数组。我有以下两个类:

class Obj {
public:
    Obj(int k, char v): key(k), val(v) {};
private:
    int key;
    char val;

   friend class Holder;
};


class Holder {
private:
    enum {MAX_SIZE = 100};
    Obj p[MAX_SIZE];
    int pSize = 0;
public:
    Holder();
    ~Holder();
//...
};

从main()初始化类Holder时,如下所示......

int main() {
    Holder test;

    return 0;
}

我在运行程序后收到这些错误:

未定义引用“Holder :: Holder()”和 未定义引用“Holder :: ~Holder()”

我不知道我是否正确使用数组作为“Holder”中的类成员变量?或者,如果我在构造函数中遗漏了某些内容?

2 个答案:

答案 0 :(得分:0)

试试这段代码。由于Holder的构造函数需要自动初始化Obj数组,因此使用默认构造函数:

Instance Control flow

答案 1 :(得分:-1)

考虑使用std :: array(或std :: vector),也许还使用std :: pair而不是Obj。

std::array<std::pair<int, char>, 100> p;  // Will automatically init with zeroes
// Example of using it:
p[50] = std::make_pair(1234, 'a');
std::cout << "key:" << p[50].first << ", val:" << p[50].second << std::endl;