すべてが、私は自分のコードに EDITをテンプレートを導入する前に働いていた stack.cpp:メンバー関数void Stack<TYPE>::push(Stack<TYPE>&, TYPE)': stack.cpp:35: error:
ノード 'は型ではありませんテンプレート実装のセグメント化エラー。ここで が、私はそれを絞り込むことができたために問題がある、あなたのヒントに感謝:4:</p> <p>ファイルではmain.cppにから含ま
pop関数の後に同様の問題が発生する可能性はありますか?
ノードがタイプではないと主張するように思われるのは混乱しています。
EDIT#2: main.cppファイルのこのステートメントは、現在問題を引き起こしています。私はすべての定義をstack.cからstack.hに移しました。この後Stack<int> list;
私のコンパイルはSegmentation fault (core dumped)
と言っています。
stack.h:
#include <iostream>
using namespace std;
template <typename TYPE>
struct node {
TYPE data;
node<Type> *next;
node(){
data = NULL;
next = NULL;
}
~node(){
if (data!=0)
delete next;
}
explicit node(int i){
data = i;
}
};
template <typename TYPE>
class Stack {
private:
node<TYPE> *top;
void init();
public:
Stack(); // default constructor
virtual ~Stack(); // destructor
bool empty();
void push(Stack&,TYPE);
TYPE pop(Stack&);
int peek();
void clear();
ostream& printf(ostream&, node<TYPE> *);
ostream& print(ostream&);
ostream& sequentialPrint(Stack&,ostream&);
ostream& reversePrint(Stack&,ostream&);
friend ostream& operator<<(ostream&, Stack&);
};
stack.cpp:
template <typename TYPE>
void Stack<TYPE>::push(Stack<TYPE> &s, TYPE i) {
node<TYPE> * n = new node(i);
n->next = top;
top = n;
}
template <typename TYPE>
TYPE Stack<TYPE>::pop(Stack<TYPE> &s){
if (empty()) {
cerr<<"Stack is empty \n";
}
TYPE temp = s.top->data;
top = top->next;
return temp;
}
[mcve] –
とはどういう意味ですか? – mzz
@mzzここをクリック - >> [mcve] –