Tôi đang cố gắng để chặn truy cập vào constructor mặc định của một lớp tôi đang viết. Hàm tạo mà tôi muốn người khác sử dụng yêu cầu tham chiếu const đến một đối tượng khác. Tôi đã đặt hàm tạo mặc định là riêng tư để ngăn người khác sử dụng nó. Tôi nhận được một lỗi trình biên dịch cho constructor mặc định vì biến thành viên tham chiếu const không được khởi tạo đúng cách. Tôi có thể làm gì để biên dịch?const tham chiếu phải được khởi tạo trong constructor cơ sở/thành viên initializer danh sách
class CFoo
{
public:
CFoo();
~CFoo();
};
class CBar
{
public:
CBar(const CFoo& foo) : fooReference(foo)
{
}
~CBar();
private:
const CFoo& fooReference;
CBar() // I am getting a compiler error because I don't know what to do with fooReference here...
{
}
};
Cảm ơn sự giúp đỡ của bạn. Đối với một số lý do, tôi nghĩ rằng trình biên dịch tạo ra một constructor mặc định ngay cả khi tôi đã không viết một. –
@Trevor Nó có, miễn là bạn không khai báo rõ ràng một hàm tạo (thuộc bất kỳ loại nào) trong định nghĩa lớp của bạn. –
@Trevor Bạn cũng có thể cần chặn trình tạo bản sao. – rwong