1
內模板類的財產繼承我試圖做到以下幾點:從模板類
#include <memory>
#include <vector>
template<typename T>
class Base
{
public:
using SharedPtr = std::shared_ptr<Base<T>>;
};
template<typename T>
class BaseVector : public std::vector<Base<T>::SharedPtr>
{};
int main(int argc, char* argv[])
{
BaseVector<int> v;
return 0;
}
,但我得到了以下錯誤:
$ g++ -std=c++11 -o template template.cpp
template.cpp:12:57: error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’
class BaseVector : public std::vector<Base<T>::SharedPtr>
template.cpp:12:57: note: expected a type, got ‘Base<T>::SharedPtr’
template.cpp:12:57: error: template argument 2 is invalid
我推測這是因爲編譯器不知道Base :: SharedPtr是一個類型。如何在BaseVector的模板參數中定義它,以便我可以繼承Base的屬性?
您可以考慮使用模板的別名,而不是一個類型。或者至少繼承向量的構造函數。 –