Với hai ký hiệu hàm dựng sau, bạn có thể xây dựng Couple
với Couple("George", "Nora")
không? Trình biên dịch của tôi phàn nàn với lỗi được hiển thị bên dưới. Nếu tôi gọi nó là Couple(std::string("George"), std::string("Nora"))
thì nó sẽ biên dịch OK. Tôi đoán có một vấn đề với việc đúc tiềm ẩn mà tôi ngạc nhiên khi tôi mặc dù char * để chuỗi sẽ được sử dụng tốt.Có hợp lệ để có hai phôi tiềm ẩn trong việc xây dựng một đối tượng trong C++ không?
class Person
{
public:
Person(const std::string& name);
};
class Couple
{
public:
Coordinate(const Person& p1, const Person& p2, const Optional<Person>& = Optional<Person>());
};
TestCouple.cpp:69: error: no matching function for call to `Couple::Couple(const char[7], const char[5])'
TestCouple.h:24: note: candidates are: Couple::Couple(const Person&, const Person&, const Optional<fox::Person>&)
Tôi không thấy vấn đề, nó sẽ hoạt động. Bạn nên đăng bài kiểm tra tối thiểu đầy đủ. – Klaim
Có phải 'Coordinate' là lỗi đánh máy không? Có nên không phải là 'Cặp đôi' thay thế không? – Nawaz
Không có điều gì như một "diễn viên tiềm ẩn" trong C++. Casts là yêu cầu rõ ràng cho việc chuyển đổi, sử dụng cú pháp cast đặc biệt. Những gì bạn đang sau là chuyển đổi tiềm ẩn. – PlasmaHH