Announcement

Collapse
No announcement yet.

Hỏi về class và sự chồng chéo của thư viện

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Hỏi về class và sự chồng chéo của thư viện

    H em có 1 file header chứa vài hàm bên ngoài(ko có trong tv trong) ,1 file chạy hàm main, vài file.h của class nữa.
    H em có 1 số hàm và thư viện ấy thì lại cần cho cả main, cả mấy cái class kia nữa nên em include header.h vào tất máy cái còn lại.
    kết quả là khi include máy cái class vào lại hàm main để dùng thì nó dẫn ra sự chồng hàm.mà nó báo lỗi "function already has a body" hoặc là redefine incompatible.thế thì trong trường hợp này e giải quyết ntn ạ? còn bt em làm dẫn ra cái vụ này thì e tự fix bằng cách khác rùi nên em chỉ cần hỏi trong th này thôi ạ

  • #2
    Bạn up project lên mình xem thử.

    Đọc câu hỏi của bạn một hồi, cuối cùng không hiểu bạn đang hỏi gì luôn.
    nguyendauit@gmail.com

    Comment


    • #3
      Originally posted by 10520100 View Post
      Bạn up project lên mình xem thử.

      Đọc câu hỏi của bạn một hồi, cuối cùng không hiểu bạn đang hỏi gì luôn.
      là thế này anh nhé.có cái hàm swap chẳng hạng,rồi trong hàm main em cũng cần.trong class gì đó e cũng dùng. mà cái hàm như vậy khá dài.nên em đưa vào header hết.để spupport cho việc khác.đến khi e cần dùng class đó trong hàm main thì e phải load cái class_xyz.h ấy vào hàm main.dẫn tới là 2 cái lặp lại và báo lỗi.
      vì cái project ấy khá dài nên e làm xong rùi ngại sữa.e sẽ code nhanh 1 cái cho a hiểu

      Comment


      • #4
        ConsoleApplication16.rar
        đấy anh

        Comment


        • #5
          Anh Hồng nói đúng rồi bạn.
          Để mình giải thích một chút cho bạn dễ hiểu.

          Để tránh việc một hàm, class bị định nghĩa nhiều lần khi include. Ta sử dụng khối tiền xử lý

          PHP Code:
          #ifndef TENHEADER_H
          #define TENHEADER_H

          // Code cua class nam o day

          #endif 
          Giải thích cách làm việc
          Ở lần include đầu tiên, TENHEADER_H chưa được define nên hệ thống sẽ define TENHEADER_H, cùng với đó là chạy những lệnh khai báo class ở trong.
          Tuy nhiên ở các lần include tiếp theo, TENHEADER_H đã được define nên nó sẽ bỏ qua không chạy những lệnh ở trong nữa.

          Mình sửa lại code cho bạn ở đay
          ConsoleApplication16.rar
          nguyendauit@gmail.com

          Comment


          • #6
            Có một tình yêu gọi là include guard: http://en.wikipedia.org/wiki/Include_guard

            Comment

            LHQC

            Collapse
            Working...
            X