Tôi có một cặp các nhà xây dựng hoạt động tốt trong kiểu C++ 03. Một trong những nhà xây dựng gọi một constructor lớp cha (hoặc lớp cơ sở) ...Ủy nhiệm các nhà xây dựng: một bộ khởi tạo cho một nhà xây dựng ủy nhiệm phải xuất hiện một mình
class Window : public Rectangle
{
public:
Window() : win(new RawWindow(*this))
{
refresh();
}
Window(Rectangle _rect) : Rectangle(_rect), win(new RawWindow(*this))
{
refresh();
}
...
Tôi cố gắng để tìm ra cách để sử dụng chức năng C++ 11 Delegating ctor mới để neaten này lên một chút. Tuy nhiên, đoạn mã sau cung cấp cho các lỗi biên dịch sau đây ...
class Window : public Rectangle
{
public:
Window() : win(new RawWindow(*this))
{
refresh();
}
Window(Rectangle _rect) : Rectangle(_rect), Window(){}
"một initializer cho một constructor ủy thác phải xuất hiện một mình" ...
Có cách nào để khắc phục điều này ??
"tránh các nhà thầu ủy nhiệm trong ví dụ này" - Thấy mã của bạn hoạt động (nhờ +1), bạn có thể mở rộng về lý do bạn đưa ra đề xuất này không? – learnvst
@learnvst Chúng hoạt động như một đối số mặc định ưa thích. Tôi tìm các đối số mặc định hoặc mã ban đầu của bạn để dễ đọc hơn. – Pubby
Vâng, điều 'Window (Rectangle())' trông hơi lạ. Tôi biết bạn đến từ đâu. – learnvst