Tôi có một chức năng của loạiLàm thế nào để vượt qua một tham số mặc định cho std :: shared_ptr <PureVirtualClass>
virtual void foo(bla, bla, bla, std::shared_ptr<LoggerInterface> logger) = 0;
Và tôi muốn vượt qua một tham số mặc định với con trỏ NULL, một cái gì đó như:
virtual void foo(bla, bla, bla, std::shared_ptr<LoggerInterface> logger = NULL) = 0;
Vì vậy, trong thực hiện, nếu logger là NULL
Tôi không làm gì với nó, nếu không tôi sử dụng logger.
Tôi đã cố gắng để tìm kiếm một giải pháp nhưng không thể tìm thấy ..
UPD: khẳng định trùng lặp là không thích hợp, tôi đang hỏi về tham số NULL mặc định.
Có thể gcc 4.4 không hỗ trợ nullptr?
Bạn nên sử dụng 'nullptr' thay của 'NULL'. Cái sau là một macro có khả năng '0', cái trước là chữ đúng cho một con trỏ rỗng. – CoryKramer
Tôi đã thử nhưng cũng gặp phải lỗi biên dịch: lỗi: ‘nullptr’ không được khai báo trong phạm vi này –
Câu hỏi này không trùng lặp với "Các hàm ảo có thể có tham số mặc định". Thực tế là hàm ảo không liên quan đến câu hỏi này. – IanPudney