Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    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[IMG]images/smilies/17.gif[/IMG]) 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


    Mã:
    #include "stdafx.h"#include "iostream"using namespace std;#include "string.h"class date{    int day, month, year;public:     date(int d = 1,int  m = 1,int  y= 1900)    {        day = d;        month = m;        year= y;    }// như anh langmang có góp í em nên truyền tham số     void In();    void Out();};void date ::In(){    cout<<"
     Nhap vao ngay, thang, nam: ";    cin>>day>>month>>year;}void date::Out(){    cout<<endl<<day<<"/"<<month<<"/"<<year<<endl;}class person{    char name[50];    date birthday;    char place[20];public:        person(char n[] = " ",char p[]=" ",date b) //ở 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    {        strcpy(name,n);        strcpy(place,p);                birthday = b;            }    void Nhap();    void show();};void person::Nhap(){    cout <<"Nhap ten? ";    gets(name);    birthday.In();    cout<<"Nhap noi sinh";    gets(place);}void person::show(){    cout <<"Ten: "<<name<<endl;    birthday.Out();    cout<<endl<<"Noi sinh: "<<place;}int main (){    person ten;    ten.Nhap();    ten.show();}

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi 091407
    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[IMG]images/smilies/17.gif[/IMG]) 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


    Mã:
    #include "stdafx.h"#include "iostream"using namespace std;#include "string.h"class date{    int day, month, year;public:     date(int d = 1,int  m = 1,int  y= 1900)    {        day = d;        month = m;        year= y;    }// như anh langmang có góp í em nên truyền tham số     void In();    void Out();};void date ::In(){    cout<<"
     Nhap vao ngay, thang, nam: ";    cin>>day>>month>>year;}void date::Out(){    cout<<endl<<day<<"/"<<month<<"/"<<year<<endl;}class person{    char name[50];    date birthday;    char place[20];public:        person(char n[] = " ",char p[]=" ",date b) //ở 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    {        strcpy(name,n);        strcpy(place,p);                birthday = b;            }    void Nhap();    void show();};void person::Nhap(){    cout <<"Nhap ten? ";    gets(name);    birthday.In();    cout<<"Nhap noi sinh";    gets(place);}void person::show(){    cout <<"Ten: "<<name<<endl;    birthday.Out();    cout<<endl<<"Noi sinh: "<<place;}int main (){        person ten;//<-- em bị lỗi ở đây nà anh [RED]    ten.Nhap();    ten.show();}
    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
    Mã nguồn PHP:
    person ten;  
    là sai
    -Và cách bạn định nghĩa cóntructor erson(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:
    Mã nguồn PHP:
    person(date b,char n[] = " ",char p[]=" ")  

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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 :
    Mã nguồn PHP:
    person(char *n = " ",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 :
    Mã nguồn PHP:
    person(char *n = " ",char *p=" "):birthday() { strcpy(name,n); strcpy(place,p); }  
    Cách 3:
    Mã nguồn PHP:
    person(char *n = " ",char *p=" ",int d = 1,int m = 1,int y= 1900):birthday(d,m,y) { strcpy(name,n); strcpy(place,p); }  

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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;

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •