Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Sử dụng các class trong các file khác nhau?

  1. #1
    Ngày gia nhập
    03 2011
    Nơi ở
    H3t.org
    Bài viết
    37

    Mặc định Sử dụng các class trong các file khác nhau?

    các bác giúp em với, E muốn khai báo kiểu dữ liệu hình tròn (miêu tả ở class Circle) trong class GlobalVar , vậy bây h thì p làm thế nào ạ , e làm code sau bị lỗi, rồi ở file CDraw.cpp e gọi
    Visual C++ Code:
    1. #include  "Global.h"
    2. .........
    3. Global glVar;
    4. //drawCircle( Circle sdghui){
    5. .................
    6. }
    7. //-----------------
    8. drawCircle(glVar.oldCir);

    Phải sửa ra sao để tham chiếu được ạ

    file "Global.h":
    Visual C++ Code:
    1. #pragma once
    2.  
    3. class GlobalVariable
    4. {
    5. public:
    6.     GlobalVariable(void);
    7.     ~GlobalVariable(void);
    8.  
    9.  
    10.     //------------------------------------------------
    11.     double pixelWidth;      //  -> kx la do rong cua 1 pixel tren Viewport
    12.     double pixelHeigh;      //  -> ky la do cao cua 1 pixel tren Viewport
    13.  
    14.  
    15.     Point   oldPoint,   tempPoint;
    16.     Circle  oldCir,     tempCir;
    17.     DaGiac  oldDaGiac,  tempDaGiac;
    18.     Color   oldObjColor,tempObjColor, OxyColor;
    19.  
    20. };
    21.  
    22. class Point
    23. {
    24. public:
    25.     Point(void);
    26.     ~Point(void);
    27.    
    28.     double  x,y;            // toạ độ (x,y)
    29. };
    30.  
    31. class Color
    32. {
    33. public:
    34.     Color(void);
    35.     ~Color(void);
    36.  
    37.     double R,G,B;           // màu (R,G,B)
    38. };
    39.  
    40. class DaGiac
    41. {
    42. public:
    43.     DaGiac(void);
    44.     ~DaGiac(void);
    45.  
    46.     int numOfPeak;  //so' dinh?
    47.     Point peakArr[10];  //  ve da giac canh so dinh toi da la 10
    48. };
    49.  
    50. class Circle
    51. {
    52. public:
    53.     Circle(void);
    54.     ~Circle(void);
    55.  
    56.     Point centre;
    57.     double radius;
    58. };

    file "Global.cpp"
    Visual C++ Code:
    1. #include "stdafx.h"
    2. #include "GlobalVariable.h"
    3.  
    4. GlobalVariable::GlobalVariable(void)
    5. {
    6. }
    7.  
    8. GlobalVariable::~GlobalVariable(void)
    9. {
    10. }
    11.  
    12. Point::Point(void)
    13. {
    14. }
    15.  
    16. Point::~Point(void)
    17. {
    18. }
    19.  
    20. Color::Color(void)
    21. {
    22. }
    23.  
    24. Color::~Color(void)
    25. {
    26. }
    27.  
    28. DaGiac::DaGiac(void)
    29. {
    30. }
    31.  
    32. DaGiac::~DaGiac(void)
    33. {
    34. }
    35.  
    36. Circle::Circle(void)
    37. {
    38. }
    39.  
    40. Circle::~Circle(void)
    41. {
    42. }

    lỗi:
    Code:
    Compiling...
    GlobalVariable.cpp
    e:\documents\bin\gas_project\globalvariable.h(15) : error C2146: syntax error : missing ';' before identifier 'oldPoint'
    e:\documents\bin\gas_project\globalvariable.h(15) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(15) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(16) : error C2146: syntax error : missing ';' before identifier 'oldCir'
    e:\documents\bin\gas_project\globalvariable.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(17) : error C2146: syntax error : missing ';' before identifier 'oldDaGiac'
    e:\documents\bin\gas_project\globalvariable.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(18) : error C2146: syntax error : missing ';' before identifier 'oldObjColor'
    e:\documents\bin\gas_project\globalvariable.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    Build log was saved at "file://e:\Documents\BIN\GAS_Project\Debug\BuildLog.htm"
    GAS - 16 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

  2. #2
    Ngày gia nhập
    03 2011
    Nơi ở
    H3t.org
    Bài viết
    37

    Mặc định RE:

    Tuuyệt vời quá, 77 ng xem mà không có ai trả lời :(

    Bỏ class GlobalVar.. đi thì chả bị lỗi j cả , sao lại thế nhỉ, vẫn là khai báo kiểu lớp mà?
    Visual C++ Code:
    1.  
    2. class Point
    3. {
    4. public:
    5.     Point(void);
    6.     ~Point(void);
    7.    
    8.     double  x,y;            // toạ độ (x,y)
    9. };
    10.  
    11. class Color
    12. {
    13. public:
    14.     Color(void);
    15.     ~Color(void);
    16.  
    17.     double R,G,B;           // màu (R,G,B)
    18. };
    19.  
    20. class DaGiac
    21. {
    22. public:
    23.     DaGiac(void);
    24.     ~DaGiac(void);
    25.  
    26.     int numOfPeak;  //so' dinh?
    27.     Point peakArr[10];  //  ve da giac canh so dinh toi da la 10
    28. };
    29.  
    30. class Circle
    31. {
    32. public:
    33.     Circle(void);
    34.     ~Circle(void);
    35.  
    36.     Point centre;
    37.     double radius;
    38. };
    Đã được chỉnh sửa lần cuối bởi Nupakachy : 31-07-2011 lúc 08:23 AM.

  3. #3
    Ngày gia nhập
    03 2011
    Nơi ở
    H3t.org
    Bài viết
    37

    có 1 bác bên http://stackoverflow.com bảo em thế này:
    The compiler can't "see" the other classes, because they're defined after the GlobalVariable class. Move the whole GlobalVariable class to the bottom of the file so that all of the classes it depends on will be defined when it needs them.
    Hoá ra là vậy đó, các bác bị lỗi như e thì chú ý nhá, cái C++ này nó biên dịch láo vãi =(( , tại làm java quen nên cứ quen khai báo chỗ nào cũng được . haizz

  4. #4
    Ngày gia nhập
    01 2010
    Nơi ở
    до свидания!
    Bài viết
    1,766

    Trích dẫn Nguyên bản được gửi bởi Nupakachy Xem bài viết
    các bác giúp em với, E muốn khai báo kiểu dữ liệu hình tròn (miêu tả ở class Circle) trong class GlobalVar , vậy bây h thì p làm thế nào ạ , e làm code sau bị lỗi, rồi ở file CDraw.cpp e gọi
    Visual C++ Code:
    1. #include  "Global.h"
    2. .........
    3. Global glVar;
    4. //drawCircle( Circle sdghui){
    5. .................
    6. }
    7. //-----------------
    8. drawCircle(glVar.oldCir);

    Phải sửa ra sao để tham chiếu được ạ

    file "Global.h":
    Visual C++ Code:
    1. #pragma once
    2.  
    3. class GlobalVariable
    4. {
    5. public:
    6.     GlobalVariable(void);
    7.     ~GlobalVariable(void);
    8.  
    9.  
    10.     //------------------------------------------------
    11.     double pixelWidth;      //  -> kx la do rong cua 1 pixel tren Viewport
    12.     double pixelHeigh;      //  -> ky la do cao cua 1 pixel tren Viewport
    13.  
    14.  
    15.     Point   oldPoint,   tempPoint;
    16.     Circle  oldCir,     tempCir;
    17.     DaGiac  oldDaGiac,  tempDaGiac;
    18.     Color   oldObjColor,tempObjColor, OxyColor;
    19.  
    20. };
    21.  
    22. class Point
    23. {
    24. public:
    25.     Point(void);
    26.     ~Point(void);
    27.    
    28.     double  x,y;            // toạ độ (x,y)
    29. };
    30.  
    31. class Color
    32. {
    33. public:
    34.     Color(void);
    35.     ~Color(void);
    36.  
    37.     double R,G,B;           // màu (R,G,B)
    38. };
    39.  
    40. class DaGiac
    41. {
    42. public:
    43.     DaGiac(void);
    44.     ~DaGiac(void);
    45.  
    46.     int numOfPeak;  //so' dinh?
    47.     Point peakArr[10];  //  ve da giac canh so dinh toi da la 10
    48. };
    49.  
    50. class Circle
    51. {
    52. public:
    53.     Circle(void);
    54.     ~Circle(void);
    55.  
    56.     Point centre;
    57.     double radius;
    58. };

    file "Global.cpp"
    Visual C++ Code:
    1. #include "stdafx.h"
    2. #include "GlobalVariable.h"
    3.  
    4. GlobalVariable::GlobalVariable(void)
    5. {
    6. }
    7.  
    8. GlobalVariable::~GlobalVariable(void)
    9. {
    10. }
    11.  
    12. Point::Point(void)
    13. {
    14. }
    15.  
    16. Point::~Point(void)
    17. {
    18. }
    19.  
    20. Color::Color(void)
    21. {
    22. }
    23.  
    24. Color::~Color(void)
    25. {
    26. }
    27.  
    28. DaGiac::DaGiac(void)
    29. {
    30. }
    31.  
    32. DaGiac::~DaGiac(void)
    33. {
    34. }
    35.  
    36. Circle::Circle(void)
    37. {
    38. }
    39.  
    40. Circle::~Circle(void)
    41. {
    42. }

    lỗi:
    Code:
    Compiling...
    GlobalVariable.cpp
    e:\documents\bin\gas_project\globalvariable.h(15) : error C2146: syntax error : missing ';' before identifier 'oldPoint'
    e:\documents\bin\gas_project\globalvariable.h(15) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(15) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(16) : error C2146: syntax error : missing ';' before identifier 'oldCir'
    e:\documents\bin\gas_project\globalvariable.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(16) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(17) : error C2146: syntax error : missing ';' before identifier 'oldDaGiac'
    e:\documents\bin\gas_project\globalvariable.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(17) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(18) : error C2146: syntax error : missing ';' before identifier 'oldObjColor'
    e:\documents\bin\gas_project\globalvariable.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    e:\documents\bin\gas_project\globalvariable.h(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    Build log was saved at "file://e:\Documents\BIN\GAS_Project\Debug\BuildLog.htm"
    GAS - 16 error(s), 0 warning(s)
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    Cậu buồn cười thật! Các Classes của cậu define phía sau, trong khi cậu lại declare dùng nó ở phía trước, vậy sao không nên lỗi được?

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    12

    nó báo lỗi thế này

    missing ';' before identifier 'oldPoint' (dịch ra là biết liền à)

    bác xem lại phần của Anh oldPoint

  6. #6
    Ngày gia nhập
    07 2011
    Nơi ở
    Modova
    Bài viết
    123

    Mặc định Sử dụng các class trong các file khác nhau?

    Trích dẫn Nguyên bản được gửi bởi Nupakachy Xem bài viết
    có 1 bác bên http://stackoverflow.com bảo em thế này:


    Hoá ra là vậy đó, các bác bị lỗi như e thì chú ý nhá, cái C++ này nó biên dịch láo vãi =(( , tại làm java quen nên cứ quen khai báo chỗ nào cũng được . haizz
    Mình thấy bạn hình như không hiểu ý của người bạn đã trả lời bạn bên http://stackoverflow.com thì phải, bạn đọc lại bài bạn làm nhé:
    Trích dẫn Nguyên bản được gửi bởi Nupakachy Xem bài viết
    Tuuyệt vời quá, 77 ng xem mà không có ai trả lời :(

    Bỏ class GlobalVar.. đi thì chả bị lỗi j cả , sao lại thế nhỉ, vẫn là khai báo kiểu lớp mà?
    Visual C++ Code:
    1.  
    2. class Point
    3. {
    4. public:
    5.     Point(void);
    6.     ~Point(void);
    7.    
    8.     double  x,y;            // toạ độ (x,y)
    9. };
    10.  
    11. class Color
    12. {
    13. public:
    14.     Color(void);
    15.     ~Color(void);
    16.  
    17.     double R,G,B;           // màu (R,G,B)
    18. };
    19.  
    20. class DaGiac
    21. {
    22. public:
    23.     DaGiac(void);
    24.     ~DaGiac(void);
    25.  
    26.     int numOfPeak;  //so' dinh?
    27.     Point peakArr[10];  //  ve da giac canh so dinh toi da la 10
    28. };
    29.  
    30. class Circle
    31. {
    32. public:
    33.     Circle(void);
    34.     ~Circle(void);
    35.  
    36.     Point centre;
    37.     double radius;
    38. };
    Cách bạn làm hoàn toàn không phải cách mà bạn đó đã trả lời giúp bạn. Mình thấy bác peterdrew đã chỉ cho bạn cách làm rồi đấy, chính bạn đã làm sai chứ không phải cái C++ của bạn có vấn đề. Hy vọng những ý kiến của mình sẽ giúp bạn nhìn nhận lại. Thân mến, chào bạn.
    Đã được chỉnh sửa lần cuối bởi Moscow : 31-07-2011 lúc 05:43 PM.
    A good beginning and a good ending !

  7. #7
    Ngày gia nhập
    03 2011
    Nơi ở
    H3t.org
    Bài viết
    37

    cảm ơn các bạn đã reply nh mik cũng tự trả lời ngay bên dưới câu hỏi rùi mà, tại lập trình java quen, mà chưa học hướng c++ nên lỗi

Các đề tài tương tự

  1. Algorithm Cách sử dụng class lồng nhau trong C#
    Gửi bởi quykiem1985 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 02-10-2012, 08:57 PM
  2. Điểm khác nhau giữa Cấu trúc và class trong CSharp
    Gửi bởi cSharp trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 31-07-2011, 12:51 AM
  3. Sử dụng Class ở 2 thư mục khác nhau trong ASP
    Gửi bởi dangbk trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 16-01-2011, 12:28 PM
  4. Sự khác nhau của OleDbConnection Class và DbConnection Class
    Gửi bởi sasadudu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 09-12-2010, 02:02 PM
  5. Sử dụng cùng giá trị Mảng trong các Class khác nhau ???
    Gửi bởi nam_dkn trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 5
    Bài viết cuối: 23-02-2009, 11:17 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn