私はC++の初心者ですので、以下の間違いがばかげていることが判明した場合は、すみません。それでも、私は自分のコードで立ち往生しているので、助けていただければ幸いです。
g ++経由でmakeを介してコンパイルしようとすると、次のエラーが発生します。
In file included from A.cpp:2:
List.h:20: error: ‘List’ is not a template type
A.cpp: In member function ‘void A::NowyObiekt(int)’:
A.cpp:6: error: ‘list_a’ was not declared in this scope
make: *** [A.o] Error 1
私のコードは次の小さなファイルに分かれています。
- ああ: http: //pastebin.com/QQ04xx2j(ヘッダー)
A.cpp:以下
#include "A.h" #include "List.h" void A::NewObject(int i) { list_a.Add(i); } int A::Compare(int a, int b) { if ( a>b ) return 1; if ( a<b ) return -1; else return 0; }
List.h:以下(ヘッダー)
#ifndef LIST_H #define LIST_H template<typename T> class Node { Node() { nxt = pre = 0; } Node(const T& el, Node *n = 0, Node *p = 0 ) { dana = el; nxt = n; pre = p; } T dana; Node *nxt, *pre; }; template<typename T> class List { public: List() { head = tail = 0; } void Add(const T&); protected: Node<T> *head,*tail; }; #endif
List.cpp: http: //pastebin.com/a3HQ9yZ4
prog.cpp:以下(メイン)
#include "List.h" #include "A.h" int main() { int i = 5; class List list_a; class A obj; obj.Add(i); }
そしてmakefileは: http: //pastebin.com/GTR5jW54
先ほど申し上げましたように、私はまだ初心者ですので、ご理解ください。助けと明確な説明をいただければ幸いです。前もって感謝します。