Cách Tách Code Ra Thành File .cpp Và File .h? - Dạy Nhau Học Trang chủ » File Có đuôi Cpp » Cách Tách Code Ra Thành File .cpp Và File .h? - Dạy Nhau Học Có thể bạn quan tâm File Có đuôi Cr2 File Có đuôi Csv File Có đuôi Csv Là Gì File Có đuôi Ctb Là Gì File Có đuôi Ct Là Gì Cách tách code ra thành file .cpp và file .h? programming c++ htwap (lu___va_sa__) April 26, 2015, 1:35pm #1 cho e hỏi chút ạ, e có 1 file declaration.h để khai báo 1 namespace chứa class có các phương thức và thuộc tính abcxyz gì đó, rồi e lại tạo 1 file definition.h để định nghĩa các phương thức cho class đó có đc ko ạ? Còn file main.cpp thì e include 2 file kia vào để dùng như bình thường ạ. Tất nhiên là trong definition.h e cũng include declaration.h. Chương trình chạy ổn nhưng e ko biết làm thế có đúng ko nữa, nên lên đây hỏi ý kiến mọi người 2 Likes nguyenchiemminhvu (NCMV) April 26, 2015, 10:42am #2 Chương trình chạy được là được. Nhưng để người khác nhìn vô dễ hiểu thì định nghĩa trong declaration.h thì nên thực thi trong declaration.cpp. Như thế người ta dễ tìm hơn. 1 Like ltd (Lê Trần Đạt) April 26, 2015, 10:43am #3 Không được đâu. Việc định nghĩa phải cho vào file .cpp. Khi inlude file .h mình mong đợi là mình đang inlude các khai báo chứ không phải định nghĩa. Lý do là vì khi include định nghĩa sẽ làm code phình to ra. Khi mình include có nghĩa là mình kéo đoạn code trong file include về file hiện tại. Nếu trong file include toàn là định nghĩa thì mình sẽ có một file mới có toàn là định nghĩa của code từ file khác. Việc compile trong C và C++ chia ra làm hai phần là để tránh việc include định nghĩa. Các ngôn ngữ như Java và C# thì có giải pháp khác để include nên không có file header. 5 Likes htwap (lu___va_sa__) April 26, 2015, 1:23pm #4 nếu không include file định nghĩa thì main nó lại báo undefined a ạ ltd (Lê Trần Đạt) April 26, 2015, 1:25pm #5 Em phải include file khai báo chứ? Nói như vậy thì có vẻ em quên mất căn bản về include file .h rồi 1 Like htwap (lu___va_sa__) April 26, 2015, 1:28pm #6 bọn e chưa đc học tách file mà a. thế a có thể nói ngắn gọn cách tách file đc ko ạ? ví dụ: file khai báo chỉ khai báo, file định nghĩa include file khai báo và chứa các định nghĩa. file main include … ltd (Lê Trần Đạt) August 20, 2016, 12:32am #7 Em phải có một file .cpp để chứa định nghĩa và một file .h để chứa prototype. Ví dụ em có file code.cpp thì sẽ có một file khác là code.h Trong file code.cpp ta sẽ include file code.h Trong file code.h ta sẽ có prototype của file code.cpp trong file code.cpp ta sẽ có định nghĩa của các hàm trong file main.cpp ta sẽ include file code.h 6 Likes htwap (lu___va_sa__) April 26, 2015, 1:46pm #8 file Array.h của e như sau: #ifndef _ARRAY_H #define _ARRAY_H namespace arr{ template<class T> class Array{ private: int size; T* a; public: Array<T>(); Array<T>(int max); ~Array<T>(); T& operator[](int index); T& operator=(const T& a2); void set(int index, T val); void Display(); int GetSize(); void Sort(); T Max(); }; } #endif File Array.cpp như sau: #ifndef _ARRAY_CPP #define _ARRAY_CPP #include <iostream> #include "Array.h" using namespace std; using namespace arr; template<class T> Array<T>::Array(){ size=0; a=new T[0]; } template<class T> Array<T>::Array(int max){ size=max; a=new T[size]; } template<class T> Array<T>::~Array(){ size=0; delete[] a; } template<class T> T& Array<T>::operator[](int index){ try{ if(index>=0 && index <size) return a[index]; else throw(index); } catch(int e){ if(e<0) cout<<"index < 0\n"; else cout<<"index >= "<<size<<endl; } } template<class T> T& Array<T>::operator=(const T& a2){ for(int i=0;i<a2.GetSize();i++) set(i,a2[i]); return *this; } template<class T> void Array<T>::set(int index, T val){ a[index]=val; } template<class T> void Array<T>::Display(){ for(int i=0;i<size;i++) cout<<a[i]<<" "; cout<<endl; } template<class T> int Array<T>::GetSize(){ return size; } template<class T> void Array<T>::Sort(){ //Sap xep mang theo thu tu tang dan for(int i=0;i<size-1;i++) for(int j=i+1;j<size;j++) if(a[i]>a[j]){ T tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } template<class T> T Array<T>::Max(){ T m=a[0]; for(int i=1;i<size;i++) if(a[i]>m) m=a[i]; return m; } #endif Còn file main.cpp như sau: #include <iostream> #include "Array.h" using namespace std; using namespace arr; int main(){ int n=0; cout<<"Nhap so phan tu: "; cin>>n; Array<int> a(n); for(int i=0;i<n;i++){ int tmp; cout<<"a["<<i+1<<"]="; cin>>tmp; a.set(i,tmp); } cout<<"Mang vua nhap:\n"; a.Display(); cout<<"Kich thuoc mang: "<<a.GetSize()<<endl; cout<<"Phan tu lon nhat: "<<a.Max()<<endl; a.Sort(); //Sap xep mang cout<<"Mang sau khi sap xep:\n"; a.Display(); Array<int> b; b=a; //Sao chep mang. cout<<"Mang b sao chep tu mang a:\n"; b.Display(); return 0; } A thấy e include sai không ạ? e compile main nó cứ báo mấy cái undefined ltd (Lê Trần Đạt) April 26, 2015, 1:48pm #9 Nó bào cái gì undefined? Kiểm tra xem file .cpp và file .h và file main có nằm chung thư mục không? 1 Like htwap (lu___va_sa__) April 26, 2015, 1:49pm #10 nó undefined mấy cái của file Array.h đó a. tất cả cùng thư mục rồi mà nguyenchiemminhvu (NCMV) April 26, 2015, 1:56pm #11 Hồi trước mình cũng bị kiểu undefined với template này một lần. Hình như hồi đó mình fix bằng cách tạo 1 project bằng code block rồi code lại như trên (không tạo riêng rẽ từng file). Cũng không nhớ có phải vậy không. 1 Like htwap (lu___va_sa__) April 26, 2015, 2:12pm #12 a @ltd giúp e với ltd (Lê Trần Đạt) April 26, 2015, 2:14pm #13 Trường hợp này thì có lẽ là do phần khai báo template của em bị lỗi. Bây giờ em thử làm lại từ đầu không có template, không có gì cả. Chỉ có class Array cực kỳ đơn giản include đúng như thế này xem? 1 Like htwap (lu___va_sa__) April 26, 2015, 2:22pm #14 không được a ạ e làm 3 file sau: testTachFile.h #ifndef test_h #define test_h class test{ public: void Display(); private: int x; }; #endif testTachFile.cpp #include <iostream> #include "testTachFile.h" using namespace std; void test::Display(){ x=3; cout<<x<<endl; } main.cpp #include <iostream> #include "testTachFile.h" using namespace std; int main(){ test a; a.Display(); return 0; } Lập trình đơn thế và tổ chức mã nguồn ltd (Lê Trần Đạt) April 26, 2015, 2:36pm #15 Của anh chạy ok mà -------------- Build: Debug in cppproject (compiler: GNU GCC Compiler)--------------- mingw32-g++.exe -Wall -g -Weffc++ -std=c++98 -Wextra -Wall -c E:\workspace\codeblocks\cppproject\array.cpp -o obj\Debug\array.o mingw32-g++.exe -Wall -g -Weffc++ -std=c++98 -Wextra -Wall -c E:\workspace\codeblocks\cppproject\main.cpp -o obj\Debug\main.o mingw32-g++.exe -o bin\Debug\cppproject.exe obj\Debug\array.o obj\Debug\main.o Output file is bin\Debug\cppproject.exe with size 952.49 KB Process terminated with status 0 (0 minute(s), 1 second(s)) 0 error(s), 0 warning(s) (0 minute(s), 1 second(s)) Anh đổi ten file thành array.h 1 Like htwap (lu___va_sa__) April 26, 2015, 2:39pm #16 hay tại Dev C++ không hỗ trợ nhỉ? ltd (Lê Trần Đạt) April 26, 2015, 2:40pm #17 Anh không nghĩ thế Em thử tạo một project mới hoàn toàn xem sao? 1 Like htwap (lu___va_sa__) April 26, 2015, 2:52pm #18 không đc a ơi e tạo project mới xong tạo 3 file như thế mà nó ko chạy ltd (Lê Trần Đạt) April 26, 2015, 3:09pm #19 Hmm, anh không dùng DevC nên khó giúp quá, nhưng anh khá chắc chắn là DevC vẫn có thể hỗ trợ được bình thường 1 Like htwap (lu___va_sa__) April 27, 2015, 12:16am #20 hiu hiu, buồn ghê gớm, a có teamviewer ko? xem giúp e. với lại a xem giúp e chỗ try catch với, hình như e làm ko đúng DayNhauHoc's Discord Học C++ Free? Click Blog Dạy Nhau Học Tự Học Lập Trình 83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao? Từ khóa » File Có đuôi Cpp CPP Là File Gì? Phần Mềm & Cách Mở File . CPP, Sửa File Lỗi Làm Thế Nào để Mở Tập Tin .CPP? Thông Tin Về đuôi - Driversol Cấu Trúc Chương Trình C/C++, File .c, .cpp - CodeCute - Programming Đuôi Cpp Là Gì - Thả Rông Chương Trình đọc File Cpp(help) Cách Viết Và Lưu Một Chương Trình C++ Phần Mềm Có Thể Mở CPP Tập Tin - DownloadAstro Tệp CPP Là Gì? - TapTin File Và Các Thao Tác Cơ Bản Với File Trong C++ - Writes Tạo Một File Có đuôi .bat để Biên Dịch File .cpp Thành .exe | VN-Zoom Cách Lưu File.CCP - Cộng đồng C Việt [Khóa Học C++] Bài 15 - Header Files - CoderDocs 1.1.3 So Sánh Ngôn Ngữ Tự Nhiên Với Ngôn Ngữ Lập Trình (3) [Tự Học C++] Tìm Hiểu Về File Header Trong C++ »