错误:需要类型,'struct' C++
error: expected a type, got 'struct' c++
我有一个class:
template <typename T>
class btree {
public:
btree(size_t maxNodeElems);
~btree() {}
struct node {
list <T> elements;
node *lvl;
};
private:
size_t maxNodeElems;
node* root;
};
template <typename T>
btree<T>::btree(size_t maxNodeElems) {
if (maxNodeElems > 0) maxNodeElems = maxNodeElems;
root = new node;
root->lvl = new node[maxNodeElems+1];
}
template <typename T>
pair <typename btree<T>::iterator, bool> btree <T>::insert (const T& elem) {
pair <btree<T>::node, bool> start;
start = addElement (elem, *root);
pair <typename btree<T>::iterator, bool> final;
return final;
}
template <typename T>
pair <btree<T>::node, bool> btree<T>::addElement (const T& e, btree<T>::node*& n) {
n->elements.push_back(e);
return make_pair(*n, true);
}
它一直给出的错误是:
error: expected a type, got 'btree::node'
error: invalid type in declaration before ';' token
At global scope:
error: type/value mismatch at argument 1 in template parameter list for 'template<class _T1, class _T2> struct std::pair'
error: expected a type, got 'btree::node'
这似乎发生在这行:
pair <btree<T>::node, bool> btree<T>::addElement (const T& e, btree<T>::node*& n) {
我用同样的方式在header中调用它,我不明白为什么它说我没有给它正确的类型。有人能给我解释一下吗?
你必须说:
pair <typename btree<T>::node, bool>
^^^^^^^^
这是因为在模板设置中,btree<T>
是未解析的,而btree<T>::node
是与相关的名称,因此需要消除歧义。
这是个很常见的错误。
使用typename
作为:
pair<typename btree<T>::node, bool>
^^^^^^^^
这是因为node
是一个依赖类型,因为它依赖于模板参数T
。
您需要使用typename
告诉编译器依赖名称定义了类型:
template <typename T>
pair <typename btree<T>::node, bool> btree<T>::addElement (const T& e, typename btree<T>::node*& n)
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- C++Union/Struct位域的实现和可移植性
- 如何在c++中定义以struct为数据成员的类中的构造函数
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 错误:"Left of getValue must have class/struct/union"
- 在 SVM-Struct 中未定义对 sqrt 的引用(已使用 -lm)
- 数据类型"struct seq<0, 1, 2>{}"含义是什么?
- 附加使用 Struct 作为"multikey"并将 std::vector 用作映射值的映射
- QML/C++/QObject Struct Copy
- 如何在 cpp 中解压缩数字,如果它们是使用 struct.pack(fmt, v1, v2, ..) 打包在 pyth
- Msgpack能否提供更好的性能和与Python的struct.pack()相同的功能?
- 将向量传递给<struct> Lua 表
- MPI_DOUBLE_INT and C++ struct
- C++ 中的"template <typename From, typename Tag> struct Alias;"是什么?
- 如何使用Struct打印交换函数
- 返回类型为struct的函数每次调用时都不返回任何内容
- 对struct::struct的未定义引用是什么意思
- 在c++Primer中使用Struct和Vector时出现错误C2661