Missing argument list and argument list of class template 'deque' has two or more formal parameters

Missing argument list C/C++ for class template 'deque'

template class deque

template <typename T>
class deque
{
    
    
private:
    T data;
public:
    deque(T d = 0):data(d);
    ~deque();
};

deque::deque(T d = 0):data(d){
    
    }
deque<T>::~deque() {
    
    }

Error: missing parameter list of class template "deque" C/C++(441), int deque(d = 0)
reason: template class is a class with template parameters, it is required to add template class parameters after the class name in the interface implementation, The same goes for function return values

Revise:

template <typename T>
deque<T>::deque(T d = 0):data(d){
    
    }

template <typename T>
deque<T>::~deque(){
    
    }

function implementation

template <typename T>
bool deque<T>::empty();

Error: The function cannot be redeclared outside the class of the member function "deque::empty"
Reason: There are more semicolons and no curly braces, it is considered to be declared
Modification:

template <typename T>
bool deque<T>::empty(){
    
    }

When there are two or more formal parameters in the template argument list

Realize a composite relationship, the above deque template class is Component part, the following is Container part: template class queue, its template actual parameter has two formal parameters

template <class T,class Sequence = deque<T>>
class queue
{
    
    
private:
    Sequence c;
public:
    queue();
    ~queue();
};

Function implementation:

template <class T,class Sequence>
queue<T,Sequence>::queue(){
    
    }

template <class T,class Sequence>
queue<T,Sequence>::~queue(){
    
    }

Guess you like

Origin blog.csdn.net/weixin_44848852/article/details/120444654