開發平台(Platform): (Ex: Win10, Linux, ...)
window10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
vs 2017
問題(Question):
我寫了2個標頭檔
1. BinaryHeap.h
2. MinHeap.h
Minheap是繼承BinaryHeap
我把2個都寫在namespace MyHeap 中
然後我都是把implement和declare分開
像這樣
namespace MyHeap
{
template<typename T>
class BinaryHeap
{
//declare
void function(void) const;
};
template<typename T>
void BinaryHeap<T>::function(void) const
{
//implement
}
}
但是編譯後會出現
"CL.exe"以返回碼2結束
然後我把BinaryHeap.h的implement搬到class中之後
像這樣
namespace MyHeap
{
template<typename T>
class BinaryHeap
{
void function(void) const
{
//implement
}
};
}
就可以編譯了
我想問問題是出在哪裡
然後為甚麼只要BinaryHeap.h改成這樣就可以過
而不是2個header都要改
我覺得應該不是我的code有寫錯因為通過編譯後可以運行
但如果覺得需要補上程式碼我會放上來
謝謝各位