这段时间在学习C++,尝试自己写了一个容器类,开始设想是模拟一个可以放下所有类型的元素的数组(就像vector那样),但是遇到了一点小问题,就像下面代码描述那样,能不能在不更改 Package 类的情况下让 Container 类能实现功能,或者这个思路本身是有问题的,如果思路有问题的话,那该怎样设计才是好的?
/*
* main.cpp
*
* Created on: Jun 16, 2015
* Author: dlll
*/
class Package{
private:
int num;
public:
Package(int num){
this->num = num;
}
operator int(){
return num;
}
};
template<class T>
class Container{
private:
T *contents;
public:
Container(int size){
contents = new T[size];
}
~Container(){
delete[] contents;
}
void set(int pos, T content){
contents[pos] = contents;
}
T get(int pos){
return contents[pos];
}
};
int main(int argc, char **argv) {
//这样写是可以的
Container<int> intContainer(10);
/*
* 这样写是不行的,会报错:
* ../main.cpp:32:13: error: no matching function for call to ‘Package::Package()’
contents = new T[size];
* */
Container<Package> packageContainer(10);
/*
* 问题: 能不能在不更改 Package 类的情况下让 Container 类能实现功能
*/
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.