矢量模板有两种类型

时间:2015-10-21 02:48:12

标签: c++ templates vector

我阅读了相关帖子,但仍然无法弄清楚。 在我的.h文件中,我定义了一个模板类:

template <typename P, typename V>
class Item {
 public:
    P priority;
    V value;
    Item(P priority, V value): priority(priority), value(value){}
};

在我的主要功能中,我尝试制作具有特定类型的项目的向量。

Item<int, string> Item1(18, "string 1");
Item<int, string> Item2(16, "string 2");
Item<int, string> Item3(12, "string 3");
Item<int, string> Item[3] = {Item1, Item2, Item3}
vector<Item<int, string> > Items(Item, Item + 3);

但我不断收到编译错误说:

expected '(' for function-style cast or type construction
vector<Item<int, string> > Items(Item, Item + 9);
            ~~~^

1 个答案:

答案 0 :(得分:1)

此处的工作代码

#include<iostream>
#include<vector>
using namespace std;
template <typename P, typename V>
class Item
{
public:
    P priority;
    V value;
    Item(P priority, V value): priority(priority), value(value) {}
};
int main()
{
    Item<int, string> Item1(18, "string 1");
    Item<int, string> Item2(16, "string 2");
    Item<int, string> Item3(12, "string 3");
    Item<int, string> ItemL[3] = {Item1, Item2, Item3}; 
    vector<Item<int, string> > Items(ItemL, ItemL+3);
}

您有几个问题:

  1. Item<int, string> Item[3] = {Item1, Item2, Item3}
  2. 后分号丢失
  3. Item<int, string> Item[3]行中您的班级名称Item和名为Item的项目数组不明确。因此,将其重命名为其他名称,我将其重命名为ItemL