gpt4 book ai didi

c++ - 模板和嵌套类/结构

转载 作者:可可西里 更新时间:2023-11-01 15:36:15 28 4
gpt4 key购买 nike

我有一个简单的容器:

template <class nodeType> list {
public:
struct node {
nodeType info;
node* next;
};

//...
};

现在,有一个函数叫做 _search它搜索列表并返回对匹配节点的引用。现在,当我提到函数的返回类型时,我认为它应该是 list<nodeType>::node* .这是正确的吗?当我定义内联函数时,它完美地工作:

template <class nodeType> list {
public:
struct node {
nodeType info;
node* next;
};

node* _search {
node* temp;
// search for the node
return temp;
}
};

但是,如果我在类外定义函数,

template <class nodeType> list<nodeType>::node* list<nodeType>::_search() {
//function
}

这是行不通的。编译器给出错误提示 Expected constructor before list<nodeType>::_search或者其他的东西。错误与此类似。我目前没有可以测试它的机器。

真诚感谢任何帮助。

最佳答案

那是因为 node 是一个依赖类型。您需要按如下方式编写签名(请注意,为了清楚起见,我将其分为两行)

template <class nodeType> 
typename list<nodeType>::node* list<nodeType>::_search()
{
//function
}

注意 typename 关键字的使用。

关于c++ - 模板和嵌套类/结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1694063/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com