在c++中调用main()中具有引用形参的函数模板的正确方法



我有一个如下的模板

    template<typename T>
T insert(T a[], int& n  ,const T& x)
{
    int i;
    for (i = n-1; i > 1 && x < a[i]; --i)
        a[i+1] = a[i];
    a[i+1] = x;
    ++n;
}

在main()

中调用它的正确方法是什么

我不确定这个定义是否正确。你是不是错过了:?其次,我没有看到模板定义或它的名称。第三,你给这个函数赋予了一个T返回类型,但你甚至没有返回任何东西。

一个正确的模板应该是这样的

template <typename T> class tMyExample
{
     public:
          tMyExample <T> () { // constructor code }
          insert (T a[], int &n, const T &x) { // your code here }
};
int main (void)
{
   tMyExample <int> MyExample;
   return 0;
}

嗯,我的模板定义只是最小的。如果你不专门化它或在定义之外添加实现,你就会得到另一个故事。但是函数内部的声明(如main)是相同的:template_name identifier;

老实说,我从来没有在参数中使用[],我使用指针(如果您使用数组,则不需要分配)。

最新更新