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

Đề tài: sửa lỗi không truyền đối số trong construct..thank

  1. #1
    Ngày gia nhập
    02 2010
    Bài viết
    2

    Unhappy sửa lỗi không truyền đối số trong construct..thank

    Vấn đề này em đã up trên diễn đàn nhiều nhưng càng ngâm cứu thì nó càng phát sinh nhiều vấn đề khác(càng học càng ngu) mong các anh em giúp đỡ vì em đang bế tắc, tại không khai báo đúng thì khi em viết lớp kế thừa lên cao vướng nhiều lổi cú pháp và logic

    C++ Code:
    1. #include "stdafx.h"
    2. #include "iostream"
    3. using namespace std;
    4. #include "string.h"
    5. class date
    6. {
    7.     int day, month, year;
    8. public:
    9.  
    10.     date(int d = 1,int  m = 1,int  y= 1900)
    11.     {
    12.         day = d;
    13.         month = m;
    14.         year= y;
    15.     }// như anh langmang có góp í em nên truyền tham số
    16.  
    17.     void In();
    18.     void Out();
    19. };
    20. void date ::In()
    21. {
    22.     cout<<"\n Nhap vao ngay, thang, nam: ";
    23.     cin>>day>>month>>year;
    24. }
    25. void date::Out()
    26. {
    27.     cout<<endl<<day<<"/"<<month<<"/"<<year<<endl;
    28. }
    29. class person
    30. {
    31.     char name[50];
    32.     date birthday;
    33.     char place[20];
    34. public:
    35.    
    36.     person(char n[] = " ",char p[]=" ",date b)
    37. //ở dòng này em không truyền được tham số cho date chương tình báo lỗi..anh em chỉ cách khắc phục
    38.     {
    39.         strcpy(name,n);
    40.         strcpy(place,p);
    41.                 birthday = b;
    42.        
    43.     }
    44.     void Nhap();
    45.     void show();
    46. };
    47. void person::Nhap()
    48. {
    49.     cout <<"Nhap ten? ";
    50.     gets(name);
    51.     birthday.In();
    52.     cout<<"Nhap noi sinh";
    53.     gets(place);
    54. }
    55. void person::show()
    56. {
    57.     cout <<"Ten: "<<name<<endl;
    58.     birthday.Out();
    59.     cout<<endl<<"Noi sinh: "<<place;
    60. }
    61. int main ()
    62. {
    63.     person ten;
    64.     ten.Nhap();
    65.     ten.show();
    66. }

  2. #2
    Ngày gia nhập
    10 2009
    Nơi ở
    Close All
    Bài viết
    993

    Trích dẫn Nguyên bản được gửi bởi 091407 Xem bài viết
    Vấn đề này em đã up trên diễn đàn nhiều nhưng càng ngâm cứu thì nó càng phát sinh nhiều vấn đề khác(càng học càng ngu) mong các anh em giúp đỡ vì em đang bế tắc, tại không khai báo đúng thì khi em viết lớp kế thừa lên cao vướng nhiều lổi cú pháp và logic

    C++ Code:
    1. #include "stdafx.h"
    2. #include "iostream"
    3. using namespace std;
    4. #include "string.h"
    5. class date
    6. {
    7.     int day, month, year;
    8. public:
    9.  
    10.     date(int d = 1,int  m = 1,int  y= 1900)
    11.     {
    12.         day = d;
    13.         month = m;
    14.         year= y;
    15.     }// như anh langmang có góp í em nên truyền tham số
    16.  
    17.     void In();
    18.     void Out();
    19. };
    20. void date ::In()
    21. {
    22.     cout<<"\n Nhap vao ngay, thang, nam: ";
    23.     cin>>day>>month>>year;
    24. }
    25. void date::Out()
    26. {
    27.     cout<<endl<<day<<"/"<<month<<"/"<<year<<endl;
    28. }
    29. class person
    30. {
    31.     char name[50];
    32.     date birthday;
    33.     char place[20];
    34. public:
    35.    
    36.     person(char n[] = " ",char p[]=" ",date b)
    37. //ở dòng này em không truyền được tham số cho date chương tình báo lỗi..anh em chỉ cách khắc phục
    38.     {
    39.         strcpy(name,n);
    40.         strcpy(place,p);
    41.                 birthday = b;
    42.        
    43.     }
    44.     void Nhap();
    45.     void show();
    46. };
    47. void person::Nhap()
    48. {
    49.     cout <<"Nhap ten? ";
    50.     gets(name);
    51.     birthday.In();
    52.     cout<<"Nhap noi sinh";
    53.     gets(place);
    54. }
    55. void person::show()
    56. {
    57.     cout <<"Ten: "<<name<<endl;
    58.     birthday.Out();
    59.     cout<<endl<<"Noi sinh: "<<place;
    60. }
    61. int main ()
    62. {
    63.         person ten;//<-- em bị lỗi ở đây nà anh [RED]
    64.     ten.Nhap();
    65.     ten.show();
    66. }
    bạn có thấy dòng mà tớ tô đỏ lên không nè.class person bạn đã định nghĩa 1 cóntructor có tham số,nên bạn không thể sử dụng constructor không có tham số.Do đó cách khai báo
    PHP Code:
    person ten
    là sai
    -Và cách bạn định nghĩa cóntructor :person(char n[] = " ",char p[]=" ",date b) cũng sai luôn.Các đối số mặc định không thể đứng trước các đối só không mặc định,các đối số mặc định fai đứng sau cùng nhất và liên tiếp nhau.
    Sửa:
    PHP Code:
    person(date b,char n[] = " ",char p[]=" "

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Nguyên nhân : cái tham số thứ 3 e ko có giá trị mặc định,
    vậy mà khi e tạo biến lại chả truyền vào cái gì
    thế tham số mặc định cho b là gì ????

    sửa chuẩn nhất như sau :
    PHP Code:
        person(char *" ",char *p=" ",date b=date(1,2,3))
        {
            
    strcpy(name,n);
            
    strcpy(place,p);
            
    birthday b;
        } 


    Ngoài ra có các cách biến thái :
    Cách 2 :
    PHP Code:
        person(char *" ",char *p=" "):birthday() 
        {
            
    strcpy(name,n);
            
    strcpy(place,p);
        } 
    Cách 3:
    PHP Code:
        person(char *" ",char *p=" ",int d 1,int  m 1,int  y1900):birthday(d,m,y
        {
            
    strcpy(name,n);
            
    strcpy(place,p);
        } 
    ^_,^

    Facebook : https://www.facebook.com/langmaninternet

    Bùi Tấn Quang

  4. #4
    Ngày gia nhập
    10 2010
    Bài viết
    43

    cho mình hỏi luôn, khi nào khai báo đối tượng bình thường, khi nào khao báo dối tượng là con trỏ vậy
    vd:
    - person p;
    - person *p;

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

  1. Truyền dữ liệu qua USB trong lập trình C#?
    Gửi bởi ilusmmf trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 21-05-2015, 09:00 AM
  2. Cách truyền dữ liệu giữa hai luồng trong C#?
    Gửi bởi tuandoi1 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 07-02-2012, 04:51 PM
  3. Socket Truyền nhiều hình ảnh cùng lúc trong mạng Lan trong lập trình C# như thế nào?
    Gửi bởi meoluoi_91 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 23-11-2011, 09:39 PM
  4. Trả lời: 3
    Bài viết cuối: 19-10-2011, 12:22 AM
  5. Các cách truyền Hàm trong C++?
    Gửi bởi ksv trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 17-10-2010, 10:27 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