Tôi đang cố gắng sử dụng một lớp mẫu và khi tôi biên dịch nó trong một tập tin trong LWS nó hoạt động: http://liveworkspace.org/code/a9c412a7e683439dfa35a9363749369dTemplate build lỗi: những biểu tượng Không xác định cho kiến trúc x86_64:
Nhưng khi tôi cố gắng để biên dịch nó làm-up của 3 tác phẩm,
dòng stack.h 4-21
dòng stack.cpp 24-48
dòng main.cpp 49 để kết thúc
Khi tôi cố gắng biên dịch những 3 file tôi nhận được
Undefined symbols for architecture x86_64:
"Stack2<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::push(Node**, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
_main in ccCoizCT.o
"Stack2<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::top(Node*&)", referenced from:
_main in ccCoizCT.o
"Stack2<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::pop(Node*&)", referenced from:
_main in ccCoizCT.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Có, tôi đã bao gồm stack.h trong một stack.cpp và main.cpp file
cơ quan chức năng Mẫu của bạn cần phải TẤT CẢ được trong các tập tin tiêu đề của bạn. Nếu bạn cắt những dòng này bằng cách sử dụng các dòng bạn đã đề cập, bạn có các khuôn mẫu <> trong các tệp .cpp, chúng phải có sẵn để trình biên dịch thực hiện khấu trừ, và do đó phải nằm trong tệp tiêu đề. – WhozCraig
vì vậy tôi nên chèn dòng nào vào tệp tiêu đề? –
Đánh giá bằng mã của bạn, bạn thậm chí không nên * cần * một tệp stack.cpp, nếu điều đó có ích. Di chuyển tất cả triển khai mẫu Stack vào tiêu đề của bạn. – WhozCraig