gpt4 book ai didi

c++ - 如何在类声明之外声明模板函数

转载 作者:太空狗 更新时间:2023-10-29 19:42:51 24 4
gpt4 key购买 nike

#include <iterator>
#include <map>
#include <vector>

template <class T1, class T2>
class A
{
public:

typedef typename std::vector<std::pair<T1,T2> >::iterator iterator;

std::pair<iterator, bool > foo()
{
iterator aIter;
return std::pair<std::vector<std::pair<T1,T2> >::iterator, bool >(aIter ,false);
}
};

上面的代码对我来说效果很好。但是我想将函数的定义移到类声明之外。我试过了。

template <class T1, class T2>
class A
{
public:

typedef typename std::vector<std::pair<T1,T2> >::iterator iterator;

std::pair<iterator, bool > foo();
};

template <class T1, class T2>
std::pair<std::vector<std::pair<T1,T2> >::iterator, bool > A<T1, T2>::foo()
{
iterator aIter;
return std::pair<std::vector<std::pair<T1,T2> >::iterator, bool >(aIter ,false);
}

但它没有编译。知道怎么做吗?

最佳答案

Naveen 的回答是正确的,我可以添加一个建议:我广泛使用 typedef,我正在等待模板 typedef 和“真实类型定义”typedef。

template <class T1, class T2>
class A
{
public:
typedef typename std::vector<std::pair<T1,T2> >::iterator iterator;
typedef std::pair<iterator, bool > MyPair;
MyPair foo();
};

template <class T1, class T2>
typename A<T1,T2>::MyPair A<T1, T2>::foo()
{
iterator aIter;
return MyPair(aIter ,false);
}

关于c++ - 如何在类声明之外声明模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1047663/

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