juste essayer d'obtenir la fonction push de stack.cpp
à incrémenter max_size_
variables par 1.accès à des variables membres de la classe agrégée
Array.h:
template <typename T>
class Array: public BaseArray<T>
{
public:
//loads of fun code
private:
size_t max_size_;
};
Stack.cpp:
//...even more fun code...
template <typename T>
void Stack <T>::push (T element)
{
ArrayStack::max_size_++;
}
Stack.h:
template <typename T>
class Stack
{
public:
Stack (void);
private:
Array <T> ArrayStack;
};
Erreur:
error: ‘ArrayStack’ is not a class or namespace
ArrayStack::max_size_++;
Ou si je le lance avec juste max_size_
:
template <typename T>
void Stack <T>::push (T element)
{
max_size_++;
}
error: ‘max_size_’ was not declared in this scope
max_size_++;
Lecture recommandée: https://stackoverflow.com/questions/495021/why-can-templates-only-be-implement-in-the-header-file – user0042
Vous devriez vraiment obtenir un [bon livre] (https://stackoverflow.com/questions/388242/the-definitive-c- livre-guide-and-list). – Rakete1111
Le '::' est l'opérateur de portée, pas l'opérateur de sélection de membre, qui est '.'. Vous * avez * vu une syntaxe similaire à celle par ex. 'ArrayStack.max_size' avant? Cependant, ce n'est pas votre seul problème, car la variable membre à laquelle vous essayez d'accéder est * private *. Si vous ajoutez un élément à 'Array', la taille ne sera-t-elle pas automatiquement mise à jour dans la classe' Array'? –