gpt4 book ai didi

C++ 嵌套模板类方法问题

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

我在嵌套类模板的方法声明方面遇到问题。我有这样的东西:

template <typename T>
class HashTrie
{
template <typename Y>
class Entry
{ // members and methods here
};

template <typename U>
class Node
{ // members and methods here
};

// members and methods here
}

以下似乎没有问题:

template <typename T>
template <typename Y>
HashTrie<T>::Entry<Y> HashTrie<T>::Entry<Y>::someMethod() {
//...
}

但是,这不会:

template <typename T>
template <typename U>
std::map<char, HashTrie<T>::Node<U> > HashTrie<T>::Node<U>::anotherMethod() {
// ...
}

我在 GCC 上收到以下错误

./HashTrie.h:389: error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’
./HashTrie.h:389: error: expected a type, got ‘(HashTrie::Node < <expression error>)’
./HashTrie.h:389: error: template argument 4 is invalid
./HashTrie.h:389: error: expected unqualified-id before ‘>’ token

我尝试添加一个类型名,但这似乎没有帮助

template <typename T>
template <typename U>
std::map<char, typename HashTrie<T>::Node<U> > HashTrie<T>::Node<U>::anotherMethod() {
// ...
}

结果...

./HashTrie.h:389: error: template argument 2 is invalid
./HashTrie.h:389: error: template argument 4 is invalid
./HashTrie.h:389: error: expected unqualified-id before ‘>’ token

icpc 说:

./HashTrie.h(389): error: template parameter "HashTrie<T>::Node [with T=T]" may not have a template argument list
std::map<char, typename HashTrie<T>::Node<U> > HashTrie<T>::Node<U>::newNodeMap() {

我不太确定在这里做什么,并且很难在网上找到任何类似的问题。任何帮助将不胜感激。

最佳答案

这样说:

template <typename T>
template <typename U>
std::map<char, typename HashTrie<T>::template Node<U> > HashTrie<T>::Node<U>::foo()
{
}

关于C++ 嵌套模板类方法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7194841/

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