我知道using在C++11中的行为与typedef相同。我有这段代码,并找到了不同的用例:
template<typename T, int a>
class Base
{
public:
std::vector<T> noise_(a);
using VectorType = std::vector<T>;
virtual VectorType getVector() const
{
return noise_;
}
protected:
VectorType noise_;
};
template<typename T, int a>
class Derived : public Base<T,a>
{
public:
using Base<T,a>::noise_;
using VectorType = typename Base<T,a>::VectorType;
using Base<T,a>::getVector;
};在这里,using以3种不同的方式使用。下面一行的目的是什么(noise_是基类的受保护成员):
using Base<T,a>::noise_;同样适用于:
using Base<T,a>::getVector;发布于 2019-01-25 16:01:42
简单地说,当基类依赖于模板参数时,不会检查它的作用域来解析名称。因此,不能仅使用noise_在Derived中引用noise_。您应该编写this->noise_,或者用using介绍名称。
https://stackoverflow.com/questions/54368771
复制相似问题