Em có code 1 lớp Stack ở dạng template class của C++
Khi để chung trong 1 file .cpp thì biên dịch OK
Sau đó em chia code ra file Stack.hpp, Stack.cpp, và main.cpp
Khi biên dịch làm lần lượt chạy các lệnh như sau :
g++ -c main.cpp
g++ -c Stack.cpp
g++ -o test main.o Stack.o
Và compiler báo lỗi
C:\Users\DRAGON~1\AppData\Local\Temp\ccijtZvF.o:main.cpp:(.text+0xbb): undefined reference to `Stack<int>::Stack()'
collect2.exe: error: ld returned 1 exit status
Em nghĩ rằng lỗi do khi em g++ -c Stack.cpp
chương trình chưa biết đây là Stack<int>
hay Stack<float>
… nên khi biên dịch thì báo undefined reference to `Stack<int>::Stack()'
Em học C++ xưa giờ chỉ code duy nhất trong 1 file
Nay thử mò chia ra các file thì lỗi tè le
Mong các bác chỉ giáo.