gpt4 book ai didi

c++ - 从模板类外部获取类型名 T

转载 作者:搜寻专家 更新时间:2023-10-31 00:14:46 24 4
gpt4 key购买 nike

我有一个 vector ,我想用一些额外的功能包装它:

template <typename T>
class PersistentVector : PersistentObject
{
private:
std::vector<T> values;

public:
virtual void read();

现在,如果 read() 必须知道类型名称 T,我将如何在类外部定义它?

第一次尝试:

void PersistentVector::read()
{
// How can I get the iterator type?
typedef std::vector<T>::iterator it_type; // vector cannot be resolved
}

第二次尝试:

// error: Member declaration not found
template <typename T>
void PersistentVector::read()
{
typedef std::vector<T>::iterator it_type; // no error
}

最佳答案

您的第二次尝试就快完成了。您的语法有点错误,并且缺少 typename .注意 PersistentVector<T>:: :

template <typename T>
void PersistentVector<T>::read()
{
typedef typename std::vector<T>::iterator it_type; // no error
}

请注意,任何使用它的代码都必须可以访问此定义。通常这意味着它必须在头文件中,或者在头文件包含的文件中。

或者,您可以将方法定义放在类定义中:

public:
virtual void read()
{
typedef typename std::vector<T>::iterator it_type;
}

关于c++ - 从模板类外部获取类型名 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21865999/

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