Vorbei an template-Klasse als parameter

Wie gebe ich eine Vorlagen-Klasse an den Konstruktor der anderen Klasse? Ich bin versucht, übergeben Sie eine Vorlagen-hash-Tabelle-Klasse, um eine Menü-Klasse die mir erlauben wird, dann kann der Benutzer entscheiden, die Art der hash-Tabelle.

template <class T>
class OpenHash 
{
private: 
    vector <T> hashTab;
    vector <int> emptyCheck;
    int hashF(string);
    int hashF(int);
    int hashF(double);
    int hashF(float);
    int hashF(char); 

public:
    OpenHash(int);
    int getVectorCap();
    int addRecord (T);
    int sizeHash();
    int find(T);
    int printHash();
    int deleteEntry(T);
};

template <class T>
OpenHash<T>::OpenHash(int vecSize)
{
    hashTab.clear();
    hashTab.resize(vecSize);
    emptyCheck.resize(vecSize);
    for (int i=0; i < emptyCheck.capacity(); i++)   
    {
        emptyCheck.at(i) = 0;
    }
}

So habe ich diese Klasse Open-Hashwert, der vorgefertigte, denn es soll ermöglichen jeder Art Hinzugefügt werden, habe ich diese Arbeit initiieren, wenn ein Objekt davon in meinem Haupt-und change-input-Typen etc.

int main () 
{
   cout << "Please input the size of your HashTable" << endl;
   int vecSize = 0;
   cin >> vecSize;
   cout << "Please select the type of you hash table integer, string, float, "
           "double or char." << endl;
   bool typeChosen = false; 
   string typeChoice; 
   cin >> typeChoice;
while (typeChosen == false)
{
    if (typeChoice == "int" || "integer" || "i")
    {
        OpenHash<int> newTable(vecSize);
        typeChosen = true;
    }
    else if (typeChoice == "string" || "s")
    {
        OpenHash<string> newTable(vecSize);
       hashMenu<OpenHash> menu(newTable);
        typeChosen = true;

    }
    else if (typeChoice == "float" || "f")
    {
        OpenHash<float> newTable(vecSize);
        typeChosen = true; 
    }
    else if (typeChoice == "double" || "d")
    {
        OpenHash<double> newTable(vecSize);
        typeChosen = true;
    }
    else if (typeChoice == "char" || "c" || "character")
    {
        OpenHash<char> newTable(vecSize);
        typeChosen = true; 
    }
    else 
    {
        cout << "Incorrect type";
    }
}
return 0;
}

In meinem main möchte ich Fragen, was der Benutzer geben Sie für die hash-Tabelle. je nachdem, was Sie eingeben sollten, erstellen Sie eine Instanz dieser Klasse mit dem Typ, den Sie wollen, und dann übergeben Sie diese zu einer anderen Klasse genannt-Menü, die Ihnen erlauben sollten, um Anruf-Funktionen aus der hash-Klasse.

  • Tun Sie wollen, eine Vorlage-Klasse oder eine Klasse template-Spezialisierung? E. g. std::less oder std::less<int>?
  • hashF ist mein hash-Funktion. und ich wollen, eine Klasse, die Vorlagen.
InformationsquelleAutor Shaun1810 | 2013-10-29
Schreibe einen Kommentar