无效使用没有参数列表的模板名称
invalid use of template-name without an argument list
所以我有一个类名存储库,它只是一个简单的数组。这是课程的一部分:
template<class Element>
class repository {
private:
int size;
int capacity;
Element* elements;
我还有一个班叫参与者。我想要一个参与者的存储库,并使用一个名为controller的新类在该存储库上执行操作。但是我不知道如何在控制器中声明存储库的类型。
这是课堂参与者的一部分:
class participant {
private:
int position;
int score;
这是来自类控制器的一部分:
#include "repository.h"
#include "participant.h"
class controller {
private:
repository repository;
repository temporary;
void createCopy();
public:
controller();
controller(repository repo);
我得到了错误:
-在带有repository repository和repository temporary的行中无效使用模板名称"repository"而没有参数列表;
-与控制方一致的"回购"之前应为")"(存储库回购);
我应该如何在类控制器的声明中声明存储库和临时的类型,这样我就不会出现任何其他错误?
Repository是一个类模板,因此您需要将数据成员声明为
private:
repository<SomeType> repository; // but this hides repository name
repository<SomeType> temporary; // repository has another meaning now!
其中在这种情况下CCD_ 1可能是CCD_。repository
本身不命名类型,repository<int>
或repository<std::string>
等命名类型。接下来,您的数据成员名称不能是repository
,因为这是temporary
所需的模板名称。因此,更改数据成员的名称:
private:
repository<SomeType> repo_;
同样,您的构造函数必须采用一种类型:
controller(repository<participant> repo);
尽管您可能希望通过常量引用传递repo
:
controller(const repository<participant>& repo);
相关文章:
- 概念中的cv限定符需要表达式参数列表
- 在卡萨布兰卡形成编码参数的列表
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- 错误 没有与参数列表匹配的重载函数"getline"实例
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 列表参数的类型定义
- std::vector 没有重载函数的实例与参数列表匹配
- 模板参数列表中的 false 在模板初始化期间计算为什么?
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- 如何在不强制转换每个参数的情况下删除初始值设定项列表中从 int 到 char 的缩小转换?
- 构造函数/函数声明参数列表中的统一初始化
- 模板化检查是否存在带有参数列表的类成员函数?
- 没有函数模板的实例"max"与参数列表参数类型匹配(int、int)
- 具有泛型列表参数和委托的函数
- 海湾合作委员会拒绝列表参数的初始化
- 为什么初始化构造函数列表参数时会发生异常?
- 简单变量列表参数C++
- 具有列表参数C++11/C++14样式的求和函数
- c++初始化列表——参数来自构造函数体本身
- 一种更有效的处理循环内列表参数的方法