Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;模板:";参数“处的类型/值不匹配”;及;应为int的常量类型,get int“;_C++_Templates - Fatal编程技术网

C++ C++;模板:";参数“处的类型/值不匹配”;及;应为int的常量类型,get int“;

C++ C++;模板:";参数“处的类型/值不匹配”;及;应为int的常量类型,get int“;,c++,templates,C++,Templates,我是新来的,所以请容忍我 我正在创建一个名为“LookUpTable”的模板,它接受两个参数“int”和“classt”。 template<int, class T> class LookupTable{ public: LookupTable<int, T> & begin(); //gives both "errors" //some more code }; 我不知道这是什么原因!如果我将'int'更改为'co

我是新来的,所以请容忍我

我正在创建一个名为“LookUpTable”的模板,它接受两个参数“int”和“classt”。

template<int, class T> class LookupTable{
  public:
    LookupTable<int, T> & begin();  //gives both "errors"
    //some more code
};
我不知道这是什么原因!如果我将'int'更改为'const int',它将给出类似的错误,即“expected….,got const int”。我一直在寻找解决办法,但似乎找不到任何特别有帮助的办法


我如何解决这个问题?如果需要更多详细信息,请告诉我。问题是您将类型
int
指定为第一个模板参数,但第一个模板参数是非类型参数;它需要一些类型为
int
的常量表达式

我想您需要指定第一个模板参数的名称,然后将其用作

template<int I, class T> class LookupTable{
  public:
    LookupTable<I, T> & begin();
    //some more code
};
模板类可查找{
公众:
LookupTable&begin();
//还有代码吗
};

模板类可查找{
公众:
LookupTable&begin();
//还有代码吗
};
并将成员函数定义为

template<int I, class T>
LookupTable <I, T> & LookupTable <I, T> :: begin(){ ... }
模板
LookupTable&LookupTable::begin(){…}

它需要一个整数作为第一个参数,因此可能的正确实例化是
可查找的
。这是你打算怎么用的吗?太棒了!非常感谢。
note:   expected a constant of type ‘int’, got ‘int’
template<int I, class T> class LookupTable{
  public:
    LookupTable<I, T> & begin();
    //some more code
};
template<int I, class T> class LookupTable{
  public:
    LookupTable & begin();
    //some more code
};
template<int I, class T>
LookupTable <I, T> & LookupTable <I, T> :: begin(){ ... }