Voici l'interfacerègles de portée variable privée C++
template <class Type>
class stackADT
{
public:
virtual void initializeStack() = 0;
virtual bool isEmptyStack() const = 0;
virtual bool isFullStack() const = 0;
virtual void push(const Type& newItem) = 0;
virtual Type top() const = 0;
virtual void pop() = 0;
virtual void reverseStack(stackType<Type>& otherStack) = 0;
private:
int maxStackSize;
int stackTop;
Type *list;
};
Voici la méthode de la pile inverse qui fait partie de stackType de classe qui étend stackADT
template <class Type>
class stackType : public stackADT<Type>
{
private:
int maxStackSize;
int stackTop;
Type *list;
public:
/***
Other methods ...
**/
void reverseStack(stackType<Type>& otherStack)
{
int count = 0;
otherStack.list = new Type[maxStackSize]; // why does this WORK!!! its private
otherStack.stackTop = 0; // why does this WORK!!! its private
//copy otherStack into this stack.
for (int j = stackTop - 1; j >= 0; j--)
{
otherStack.push(list[j]);
count++;
}
}
Voici la boucle principale avec les appels.
stackType<int> stack1(50);
stackType<int> stack2(50);
stack1.initializeStack();
stack1.push(1);
stack1.push(2);
stack1.push(3);
stack1.push(4);
stack1.push(5);
stack1.reverseStack(stack2);
Alors qu'est-ce qui se passe avec cela dans la cause de C en Java, PHP, Python (dénomination mutilée), et d'autres OOD ne permettrait pas à ce sujet.
* ne permet pas cela * - pouvez-vous être plus précis sur ce qu'est * this *? Votre code déclare également 'stackADT' mais utilise' stackType'. Lequel est-ce? –
J'ai dit que l'interface est, modèle classe stackType: stackADT publique { privé ...... il étend –
c3cris
que je vois. C'est une bonne idée de poster un SSCCE (http://sscce.org) pour avoir une vue d'ensemble. En l'état, votre question ne décrit pas la relation entre 'stackADT' et' stackType', ce qui la rend confuse. –