我正在编写一个模板类,然后需要编写测试用例来测试我的代码并验证所有方法是否正常工作。在我的测试文件中,我尝试创建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:
Collection<int> testCollection = new Collection();
这是我收到错误消息的地方:“没有构造函数“ Collection”的实例与参数listC / C ++(289)匹配”。
有人可以帮助我了解为什么我收到此错误消息吗?
运算符new返回一个指针。
所以这个宣言
Collection<int> testCollection = new Collection<int>();
(您忘了在表达式中使用new运算符指定模板参数的情况)可以想象如下
Collection<int> *p = new Collection<int>();
Collection<int> testCollection = p;
然后编译器尝试找到一个声明为
Collection<int>( Collection<int> * );
因为您要使用Collection<int>
运算符new返回的指针来初始化类型的对象。
但是类没有这样的带有一个参数的构造函数。
你必须写
Collection<int> *testCollection = new Collection<int>();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句