我刚刚开始学习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”中的类成员变量?或者,如果我在构造函数中遗漏了某些内容?
答案 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;