我一直在尋找類似的答案,他們都有參數錯誤或錯別字。不能聲明變量'測試'是抽象類型'OurStack <int>'
我想創建一個int類型的堆棧,但我遇到了push函數的問題。
確切的錯誤是:
OurStack<int> test;
^
In file included from StackTester.cpp:5:0:
OurStack.h:7:7: note: because the following virtual functions are pure within 'OurStack<int>':
class OurStack : public StackInterface<T>
^
In file included from OurStack.h:4:0,
from StackTester.cpp:5:
StackInterface.h:11:15: note: bool StackInterface<T>::push(const T&) [with T = int]
virtual bool push(const T& newEntry) = 0;
這裏是我的代碼:
StackInterface.h
/** @file StackInterface.h */
#ifndef _STACK_INTERFACE
#define _STACK_INTERFACE
template<class T> class StackInterface
{ public:
/** Sees whether this stack is empty. @return True if the stack is empty, or false if not. */
virtual bool isEmpty() const = 0;
/** Adds a new entry to the top of this stack. @post If the operation was successful, newEntry is at the top of the stack. @param newEntry The object to be added as a new entry. @return True if the addition is successful or false if not. */
virtual bool push(const T& newEntry) = 0;
/** Removes the top of this stack. @post If the operation was successful, the top of the stack has been removed. @return True if the removal is successful or false if not. */
virtual bool pop() = 0;
/** Returns the top of this stack. @pre The stack is not empty. @post The top of the stack has been returned, and the stack is unchanged. @return The top of the stack. */
virtual T peek() const = 0;
};
// end StackInterface
#endif
OurStack.h
#ifndef _STACK_H_
#define _STACK_H_
#include "StackInterface.h"
template <class T>
class OurStack : public StackInterface<T>
{
private:
std::stack<T> ourStack;
public:
OurStack();
bool isEmpty() const;
bool push(const T& newEntry) const;
bool pop();
T peek() const;
};
#include "OurStack.cpp"
#endif
OurStack.cpp
StackTester.cpp
#include <iostream>
#include <cstdlib>
#include <string>
#include <stack>
#include "OurStack.h"
using namespace std;
OurStack<int> test;
int any;
int main()
{
cout<<"press any number";
cin>>any;
return 0;
}
您使用的是Visual Studio嗎? – Omore
nope,notepad ++ –