【发布时间】:2013-09-25 00:42:39
【问题描述】:
我正在尝试使用 C++ 和模板编写容器类。但是,我遇到了一个我不明白的编译错误...
变量elems是一个私有向量,声明为:
private:
vector<DataType> elems;
矢量是自定义矢量。它的构造函数是:
vector::vector(int init_capacity) : vect_capacity(init_capacity), vect_size(0), vect_elems(NULL){
assert(init_capacity >= 0);
if (init_capacity > 0){
vect_elems = new Object[init_capacity];
}
}
构造函数如下:
template <class DataType>
bag<DataType>::bag(int init_capacity) : elems(init_capacity) {
}
此代码返回以下错误:
../src/vector.h: In instantiation of ‘vector<DataType>::vector(int) [with DataType = int]’:
../src/bag.h:33:60: required from ‘bag<DataType>::bag(int) [with DataType = int]’
../src/bag_test.cpp:6:17: required from here
老实说,我不知道会发生什么。将非常感谢任何可以为我指明正确方向的人...
【问题讨论】:
-
你不应该留下警告......如果只是因为它们混淆了编译器的输出
-
好像用的是你自己的
vector。这是故意的,还是您的意思是使用std::vector?显示您在vector.h中定义的vector类的构造函数。 -
粘贴整个错误信息。我不在乎它有多长或者你认为什么不重要。您所显示的只是 location 信息,但实际的 error 仍未在发布的消息中。
-
抱歉问了些傻事,但你只是展示了诱人的 sn-ps 代码,所以我必须问:
vector构造函数是公开的吗? -
你不应该允许为你的代码发出警告。直到您达到 800 级技能并培养了至少三个学徒。
标签: c++ class templates constructor containers