Hàm tạo nhận nhiều tham số trong C++

Chào mọi người, em có 1 bài tập như thế này

class Book
{
private:
   char *title;
   char *authors;
   int publishingYear;

public:
   Book(const char *title, const char *authors, int publishingYear)
   {
       .//TODO
   }

yêu cầu viết hàm tạo với authors có thể nhận vào nhiều tác giả. Ví dụ:

Book book1("Introduction to Algorithms", "Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein", 1990);

Em nghĩ cần phải xác định được trong các tham số truyền vào, phần nào thuộc về authors, cần biết được số lượng, chiều dài để lưu vào mảng nhưng em không biết cách để thực hiện. Mong mọi người giúp đỡ hoặc cho em key word để em có thể tra cứu thêm.
Em cảm ơn.

Bạn có thể phân biệt giúp mình đoạn code ví dụ trên khác đoạn code nhận chỉ 1 tác giả bên dưới giống/khác nhau chỗ nào không?

Book book1("Introduction to Algorithms", "Thomas H. Cormen", 1990);
5 Likes

Với bài dưới thì mình có thể viết hàm tạo như thế này

  this->authors = new char [strlen(authors) + 1];
  strcpy(this->authors, authors);

Nhưng với bài trên thì mình không biết cách để lấy số lượng tác giả để tạo mảng lưu. Mình nghĩ cách lấy là từ phần tử thứ 2 đến trước phần tử cuối trong lời gọi hàm nhưng không biết cách hiện thực.

Chắc là viết 1 dòng dài quá nên bạn chưa nhìn rõ, nếu viết lại như bên dưới thì sao bạn?

Book book1(
    "Introduction to Algorithms",
    "Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein",
    1990
);

// vs

Book book2(
    "Introduction to Algorithms",
    "Thomas H. Cormen",
    1990
);
4 Likes

À, mình hiểu ý bạn rồi, tí về mình thử lại thử. Cảm ơn bạn nha

Cảm ơn bạn, mình hoàn thành xong bài tập rồi. Lỗi do mình đọc không kĩ các tham số truyền vào.

2 Likes

Bạn ơi, mình cũng có phần bài tập giống bạn, bạn cho mình xem tham khảo với được không bạn?
Mình cảm ơn bạn nhiều lắm.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?