utilizzo non valido di modello, nome, senza un elenco di argomenti

Quindi ho un nome di classe repository che è solo un semplice array.Ecco una parte della classe:

template<class Element>
class repository {
private:
    int size;
    int capacity;
    Element* elements;

Ho un’altra classe di nome partecipante.Voglio avere un repository di partecipanti e di eseguire azioni su quel repository utilizzando una nuova classe denominata controller.Ma non so come dichiarare il tipo di repository nel controllore.

Qui è una parte della classe partecipante:

class participant {
private:
    int position;
    int score;

E qui c’è una parte della classe controller:

#include "repository.h"
#include "participant.h"
class controller {
private:
    repository repository;
    repository temporary;
    void createCopy();
public:
    controller();
    controller(repository repo);

E ottengo l’errore:

-utilizzo non valido di modello-nome ‘repository’ senza un elenco di argomenti int righe con repository deposito temporaneo;

previsto ‘)’ prima ‘repo’ in linea con il controller(repository repo);

Come devo dichiarare il tipo di repository e temporanea nella dichiarazione della classe controller, in modo che io non ottenere qualsiasi altri errori?

  • benvenuti a TANTO!!! Se le risposte sono utili, si prega di segnare loro. Se non, quindi per favore dare qualche feedback. Se una risposta risponde alla tua domanda per la vostra soddisfazione, si può accettare. Rende più probabile che siano gli altri a rispondere alle vostre domande in futuro.
InformationsquelleAutor ironflower | 2012-04-04

 

One Reply
  1. 4

    Repository è un modello di classe, quindi è necessario dichiarare i vostri dati di membri

    private:
        repository<SomeType> repository; //but this hides repository name
        repository<SomeType> temporary;  //repository has another meaning now!

    dove SomeType in questo caso è probabilmente participant. repository di per sé non è il nome di un tipo, repository<int> o repository<std::string> etc. fa. Accanto, i tuoi dati nome del membro non può essere repository, dal momento che è il nome del template necessari per temporary. Quindi, modificare il nome del membro dati:

    private:
        repository<SomeType> repo_;

    Allo stesso modo, il costruttore deve prendere una tipo:

    controller(repository<participant> repo);

    anche se probabilmente si desidera passare repo da const riferimento:

    controller(const repository<participant>& repo);
    • ho già provato.dopo che ho tipo di repository<partecipante> deposito; ho nuovi messaggi di errore nella classe controller come “repository<partecipante> controller::repository’ è privato e la dichiarazione di ‘repository<partecipante> controller::repository’ [-fpermissive],ma anche io ricevo un errore nella classe repository dicendo che cambia significato di ‘repository’ da ‘classe repository<partecipante>’ [-fpermissive].Hom really new into programming in c++ so i really dont so perché ho questo errore.
    • potresti provare a dare i vostri dati privati, membro di un nome diverso da “repository”?
    • Ho modificato la mia risposta per risolvere il nome di problema di troppo.

Lascia un commento