これは非常にナイーブかもしれませんが、cpp のプリプロセッサについてかなり混乱しています。ヘッダー ファイルを定義しました -- Node.h:
#ifndef NODE_H_
#define NODE_H_
#include<iostream>
class Node{
friend std::ostream &operator<<(std::ostream &os, const Node & n);
public:
Node(const int i = -1);
private:
Node * next;
int value;
friend class List;
};
#endif
次に、Node.cpp でメソッドを定義しました。
#include "Node.h"
using namespace std;
Node::Node(const int i):value(i), next(NULL){}
ostream& operator <<(ostream & os, const Node& n){
return os<<"value : "<<n.value<<endl;
}
最後に、プリプロセッサをチェックするための test.cpp ファイルがあります。
#include "Node.h"
//#include <iostream>
using namespace std;
int main(){
Node * n = new Node;
cout<<*n;
}
ただし、gcc でコンパイルしようとすると、次のエラーが発生しました。
/home/xuan/lib/singleLinkedList/test.cpp:6:'Node::Node(int)'未定義参照