我越來越:
error: default argument for template parameter for class enclosing 'ticker<T, E, A>::garbage_element'
51 | E ticker<T,E,A> ::garbage_element;
| ^~~~~~~~~~~~~~~
我知道我是否像這樣使用關鍵字“inline”:
inline static E garbage_element;
在“ticker”模板內,它編譯得很好,但它在模板外應該是什么樣子。
#include <iostream>
#include <vector>
template< template<class, class> class T, class E, class A = std::allocator<E> >
class ticker
{
T<E,A>* container;
int current_index;
bool mode;
static E garbage_element;
public:
// constructors and members fn
};
template< template<class, class> class T, class E, class A = std::allocator<E> >
E ticker<T,E,A> ::garbage_element;
uj5u.com熱心網友回復:
當定義一個類模板的靜態資料成員時,其模板引數之一具有默認引數,默認引數不應重復。第一次宣告/定義類模板時只需要一次。
A這意味著在類外定義成員時不需要為引數指定默認引數,garbage_element如下所示:
//-------------------------------------------------------v-->no default argument here
template<template<class, class> class T, class E, class A>
E ticker<T,E,A>::garbage_element;
作業演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/537143.html
標籤:C 定义静态成员模板模板
下一篇:如何完美轉發多個struct成員
