在' L'之前缺少模板参数

时间:2015-10-29 11:33:04

标签: c++ data-structures compiler-errors

有以下错误

[Error] missing template arguments before 'L'
[Error] 'L' was not declared in this scope
recipe for target 'main.o' failed

在此代码部分

   int main () {
   lista L;
   L.crealista();

这是什么意思?

这是课程" lista":

template <class tipoelem>
class lista {
public:
typedef int pos;

struct cella {
tipoelem elemento;
pos prec;
pos succ;
};

lista ();
~lista ();

2 个答案:

答案 0 :(得分:0)

如果我们把它归结为基础知识,你有:

template <class T>
struct X{};

int main()
{
    X x;
}

因为X是一个类模板,并且你没有提供它,所以你会得到一个错误,说明缺少模板参数。修复是为它提供适当的元素:

// ... as before ...
int main()
{
    X<int> x; // Note <int> argument.
}

在您的简短代码段中,您看起来有一个链接列表(lista),您要创建一个您希望存储在其中的某种数据类型(tipoelem)。你需要声明列出你想要的tipoelem。

E.g。

lista<int> L;

答案 1 :(得分:0)

固定!现在我正在尝试实现打印列表功能。

在列表类头文件

中添加了这个
void stampalista (lista& L);

和.cpp

template <class tipoelem>
void lista<tipoelem>::stampalista (lista& L) {
    lista::pos corrente;

    if (L.listavuota()) {
        cout << "la lista e' vuota\n";
        return;
    }

    corrente = L.primolista();
    while (!L.finelista(corrente)) {
        cout << L.leggilista(corrente) << " ";
        corrente = L.succlista(corrente);
    }
    cout << "\n";
}

错误:

[错误]没有匹配函数来调用'lista :: stampalista()'