【发布时间】:2021-01-24 20:51:28
【问题描述】:
我正在编写一个模板类,然后需要编写测试用例来测试我的代码并验证所有方法是否正常工作。在我的测试文件中,我尝试创建 Collection 的实例,但得到以下错误:“构造函数“Collection”的实例与参数 listC/C++(289) 不匹配”。我定义了一个无参数构造函数,所以我不确定它为什么不起作用。
这是我定义构造函数的类的一部分:
template <typename Object>
class Collection
{
// TODO(student): the rest of the template
private:
Object *objectsArr;
int maxArrSize = 10;
int sizeOfCollection = 0;
public:
Collection()
{
objectsArr = new Object[maxArrSize];
}
在测试文件中,我尝试使用以下方法实例化集合:
Collection<int> testCollection = new Collection();
这是我收到错误消息的地方:“没有构造函数实例“集合”与参数 listC/C++(289) 匹配”。
有人可以帮我理解为什么我会收到此错误消息吗?
【问题讨论】:
-
看来你的意思是一个指针 Collection
*testCollection = new Collection();而不是对象 Collection testCollection = new Collection(); -
@VladfromMoscow 我仍然收到同样的错误。在这种情况下我为什么要使用指针?
-
运算符 new 返回一个指针。
-
或者只是尝试
Collection<int> testCollection;而不使用任何类型的new语句,它会调用默认构造函数。
标签: c++ templates constructor