Possible Duplicate:
Why can templates only be implemented in the header file?C++(GCC):未定義的引用`堆棧<int> ::堆棧(INT)」
我這個掙扎了一段時間,我已經看到了幾個問題在這裏,但作爲C++新手我無法理解我錯在哪裏。
下面是代碼,我把它從this page,並試圖使其工作,但到目前爲止,我還沒有得到幸運:
stack.h
#ifndef STACK_H
#define STACK_H
template <class T>
class Stack {
public:
Stack(int n);
~Stack() { delete[] s; };
private:
T* s;
int _top;
int _size;
};
#endif // STACK_H
堆棧。 CPP
#include "stack.h"
template <class T>
Stack<T>::Stack(int n) {
_size = n;
_top = -1;
s = new T[_size];
}
的main.cpp
#include <iostream>
#include "stack.h"
using namespace std;
int main() {
Stack<int> s(10); // undefined reference to `Stack<int>::Stack(int)'
return 0;
}
當我編譯器(gcc 4.5.2),我得到一個錯誤:undefined reference to Stack<int>::Stack(int)
。我嘗試了幾件事,但沒有任何真正的知識來支持我所做的事情。如果有人能解釋我發生了什麼,我會非常感激。
嗯,它不是重複的,但它確實解決了我的問題。我正在尋找錯誤('undefined reference'),所以我以前沒有找到這個問題。謝謝! – Janoma
似乎有很多新人開始學習C++ ...... C++ 11的效果是什麼? – 2011-10-11 19:02:12
@MarkB:5的規則? :) – 2011-10-11 19:03:04