Wie implementiert eine Klassenvorlage eine Definition außerhalb einer Klasse?

Problem:
Die Erstellungszeit der Memberfunktion in der Klassenvorlage liegt in der Aufrufphase, was dazu führt, dass beim Schreiben der Unterdateien keine Verknüpfung hergestellt werden kann.
Lösung:

Lösung 1: Fügen Sie die .cpp-Quelldatei direkt ein.
Lösung 2: Schreiben Sie die Deklaration und die Implementierung in dieselbe Datei und ändern Sie das Suffix in .hpp. HPP ist der vereinbarte Name, nicht obligatorisch. In den meisten Fällen handelt es sich um
Lösung 2

queue.h文件
#pragma once
#include<iostream>

#include<deque>
using namespace std;
template<class T,class vet = deque<T>>
class Seqqueue{
    
    
public:
    void push(T a){
    
    
        que.push_back(a);
        length++;
    }
    void pop()
    {
    
    
        que.pop_front();
        length--;
    }
    bool empty(){
    
    
        return que.empty();
    }
    
    int size();
    // {
    
    
    //     return que.size();
    // }
    T back(){
    
    
        if(!que.empty())
        {
    
    
            return que.back();
        }
    }
    T front(){
    
    
        if(!que.empty())
        {
    
    
            return que.front();
        } 
    }
    void printf_que(){
    
    
    while(!que.empty())
    {
    
    
        cout<<que.front()<<" ";
        que.pop_front();
    }
    cout<<endl;
    }
private:
   vet que;
   int length = 0;
};

template<class T,class vet>
int Seqqueue<T,vet>::size()
{
    
    
    return length;
}

Um die Definition direkt in der Klasse zu erleichtern, ist dies auch möglich

Acho que você gosta

Origin blog.csdn.net/psq1508690245/article/details/118491551
Recomendado
Clasificación