gpt4 book ai didi

c++ - 如何定义模板类的模板

转载 作者:行者123 更新时间:2023-11-30 02:24:23 30 4
gpt4 key购买 nike

我有一个模板类:

template <class T>
class A
{
...
protected:
T m_value;
}

我想用这个类为 vector 制作一个模板:

template <class T>
class B:public A<std::vector<T>> //no need of space between >> (c++11)
{
void testSize()
{
if(m_value.size() > ...)
{
...
}
}
}

编译器提示:错误:“m_value”未在此范围内声明

有没有办法我可以做到这一点,或者让我直接使用 A 类为每个 std::vector 类型重新编码这个函数?

谢谢,

编辑:

我试过这个:

template <class T>
class B:public A<std::vector<T>> //no need of space between >> (c++11)
{
void testSize()
{
if(m_value.size() > ...)
{
...
}
}

std::vector<T> m_value;
}

编译器不再报错了,但是 A 类函数中调用的 m_value 是否引用了 B 类的 m_value?

最佳答案

在您的第一个示例中,m_value 是从属名称。
只需执行此操作即可在 B 中正确引用它:

this->m_value.size()

也就是说,将您的 if 语句变为:

if(this->m_value.size() > ...)

编辑部分的代码反而是错误的。 B 类和 A 类将分别引用它们自己的 m_value 拷贝。

关于c++ - 如何定义模板类的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45383981/

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