Frage

Ich arbeite an einem kleinen Projekt, bei dem ich mehrere Klassen verwende. Eine dieser Klassen ist Menu, was a hat showContainer Methode. Hier ist die Klassenerklärung:

class Menu {
    //snip
    Menu();
    Menu(std::string, std::string, int, int);
    virtual ~Menu();
    //snip
    /**
     * Visualiza e providencia navegacao presente num container
     * @param Container a mostrar
     * @return Indice seleccionado pelo utilizador
     */
    template <class C>
    void showContainer(std::list<C>, int, int);
};

Es kompiliert es gut. Ich habe den folgenden Test zum Projekt hinzugefügt main.cpp:

Menu menu;
Manga* manga1;
manga1->setCapacidade(60);
manga1->setCategoria(LongoCurso);
manga1->setLocalizacao("Norte");
manga1->setNumero(143);
Manga* manga2;
manga2->setCapacidade(60);
manga2->setCategoria(LongoCurso);
manga2->setLocalizacao("Norte");
manga2->setNumero(143);
Manga* manga3;
manga3->setCapacidade(60);
manga3->setCategoria(LongoCurso);
manga3->setLocalizacao("Norte");
manga3->setNumero(143);

std::list<Manga *> teste;
teste.push_back(manga1);
teste.push_back(manga2);
teste.push_back(manga3);
menu.showContainer(teste, 5, 0);

return 0;

Dies gibt den folgenden Compiler -Fehler zurück:

C:\Users\Francisco\workspace_aeda\ProjectoAEDA\Debug/../src/main.cpp:96: undefined reference to `void Menu::showContainer<Manga*>(std::list<Manga*, std::allocator<Manga*> >, int, int)'

Irgendwelche Ideen?

Vielen Dank für Ihre Zeit.

War es hilfreich?

Lösung

Sie Definition der Menu::showContainer Die Funktionsvorlage muss für den Code sichtbar sein, der ihn aufruft, es sei denn, sie wurde für den im Aufruf verwendeten Typ explizit instanziiert.

Wahrscheinlich haben Sie in einer Implementierungsdatei definiert.

Wenn ja, bewegen Sie es in den Header.

Prost & hth.,

Andere Tipps

Sieht so aus, als würde der Compiler nur eine Erklärung von Showcontainer sehen, keine Definition, wenn er main.cpp zusammenstellt. Sehen C ++ Faqlite Artikel zu diesem.

Versuchen:

menu.showContainer<Manga*>(teste, 5, 0); 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top