Tôi có một đống thú vị của hội tôi muốn đặt lại với nhau:C# và C++ lớp thừa kế xen
Common hội (C# hoặc C++ - CLI)
public class MyBase { public void MethodA() { ... } private void MethodB() { ... } protected virtual MethodC() { ... } }
Kiểm tra Mã Assemblies (tất cả C++ - CLI)
public class MySpecific : public MyBase{ protected: override MethodC(); };
Thử nghiệm mô phỏng (C#)
MySpecific obj = new MySpecific(); obj.MethodC();
Trong khi lắp ráp 1 có thể là C++ - CLI để giữ cho mọi thứ đơn giản hơn, tôi thực sự muốn giữ lắp ráp 3 trong C#. Điều này phần lớn là một bài tập để xem liệu thừa kế có thể được thực hiện theo một trong hai hướng hay không, nhưng tôi cũng có một trường hợp thế giới thực trong đó ngăn xếp này hữu ích. Vấn đề đầu tiên tôi thấy là cụm C++ - CLI không biên dịch vì nó không nhận ra MyBase như một lớp, mặc dù tôi có tham chiếu đến assembly 1 và trông giống như không gian tên thích hợp.
Làm cách nào để viết các lớp học có thể sử dụng ngôn ngữ?
Làm cách nào để có trình biên dịch C++ xem MyBase? Tôi tiếp tục nhận được "C2504: 'Mybase': lớp cơ sở chưa được xác định" – Foozinator
Đảm bảo rằng nó được thêm làm tham chiếu và bạn đã biên tập tệp này bằng/clr. Ngoài ra, hãy đảm bảo bạn đang làm việc với (hoặc sử dụng) các không gian tên thích hợp. Có vẻ như bạn không ở trong một phần sử dụng cùng một không gian tên. Bạn có thể đủ điều kiện MyBase - tức là: lớp ref công khai MySpecific: public MyNamespace :: MyBase {...} –