[英]Use cases of keyword using in C++11
我知道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;
簡而言之,當基類依賴於模板參數時,將不檢查其范圍來解析名稱。 因此,您不能僅使用noise_
在Derived
中noise_
。 您應該編寫this->noise_
,或using
引入名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.