Kịch bản tạo ra điều này khá phức tạp vì vậy tôi sẽ loại bỏ một vài phần và đưa ra một biểu diễn chính xác về các lớp liên quan.C++ Nhiều câu hỏi thừa kế
/* This is inherited using SI by many classes, as normal */
class IBase
{
virtual string toString()=0;
};
/* Base2 can't inherit IBase due to other methods on IBase which aren't appropriate */
class Base2
{
string toString()
{
...
}
};
/* a special class, is this valid? */
class Class1 : public IBase, public Base2
{
};
Vì vậy, điều này có hợp lệ không? Sẽ có xung đột trên toString? Hoặc Class1 có thể sử dụng Base2 :: toString để thỏa mãn IBase? Giống như tôi nói có rất nhiều thứ khác không được hiển thị, vì vậy những gợi ý cho những thay đổi lớn về thiết kế trong ví dụ này có lẽ không hữu ích ... mặc dù có đề xuất/lời khuyên chung.
suy nghĩ khác của tôi là một cái gì đó như thế này:
class Class1 : public IBase, public Base2
{
virtual string toString()
{
return Base2::toString();
}
};
này được xây dựng và liên kết, nhưng tôi không có ý tưởng nếu nó đã ẩn lỗi.