Tôi đã chuyển đổi một nền tảng mô phỏng khoa học từ Java sang C++. Tôi đã cố gắng giữ thiết kế càng nhiều càng tốt giống như thực hiện trước đó. Trong java vì các ràng buộc trễ, phụ thuộc vòng tròn được giải quyết tại thời gian chạy. Tuy nhiên, phụ thuộc vòng tròn đã tạo ra một đống lộn xộn trong C++.C++, hai lớp có nhu cầu chung
Có công cụ tự động phân tích và liệt kê thông tin bao gồm và tham chiếu không? (Visual Studio 2010 chỉ phát hành một danh sách rất lớn các lỗi vô nghĩa).
Tôi đã cố gắng sử dụng các tham chiếu chuyển tiếp bất cứ khi nào có thể. Tuy nhiên trong một số trường hợp cả hai lớp đều cần chức năng của lớp khác (tức là gọi đến các phương pháp khiến không thể sử dụng tham chiếu chuyển tiếp). Những nhu cầu này tồn tại trong Logic và nếu tôi thay đổi hoàn toàn thiết kế, chúng sẽ không đại diện cho tương tác thế giới thực.
Làm cách nào chúng tôi có thể triển khai hai lớp cần phương pháp và trạng thái của nhau? Có thể triển khai chúng trong C++ không?
Ví dụ:
- Ví dụ 1: Tôi có một lớp được gọi là "thế giới" mà tạo ra các đối tượng của các loại "chất độc". Đại lý cần gọi các phương thức của Thế giới để lấy thông tin về môi trường của nó. Thế giới cũng cần phải lặp qua các Đại lý và thực hiện phương thức "chạy" của họ và nhận được trạng thái của họ (cập nhật trạng thái có thể được thực hiện ngược lại để giải quyết phần này của vấn đề nhưng không phải là phương thức chạy).
- Ví dụ 2: Đại lý tạo bộ sưu tập "Ý định" của họ. Mỗi tác nhân cần lặp lại thông qua ý định của nó và chạy/cập nhật/đọc trạng thái ý định. Ý định cũng cần để có được thông tin về môi trường thông qua Đại lý (nếu được thực hiện trực tiếp thông qua "Thế giới" nó sẽ tạo ra các vòng tròn phức tạp một lần nữa) và cũng có thể thông tin về bản thân Đại lý.
Dưới biểu đồ cho thấy một nhóm phụ khác của lớp học, và một số phương pháp và tài sản của họ:
Nếu bạn gặp vấn đề với lỗi, bạn luôn có thể đăng câu hỏi chứa các lỗi đó (vui lòng nguyên văn) và ai đó rất có thể sẽ giúp bạn. Ngoài ra, những lỗi đó có thể vô nghĩa đối với bạn, nhưng không phải với người khác. Nó cũng rất khó để trả lời câu hỏi mà không nhìn thấy một số mã, và cho điều này tôi khuyên bạn nên đọc http://sscce.org/. –
Joachim, Chúng là loại lỗi được tạo ra trong các trường hợp phụ thuộc vòng tròn. Không thể xác định các lớp học. 'code' 1> e: \ programming \ cprojt \ actiondb11 \ actiondb \ base \ world.h (35): lỗi C2143: lỗi cú pháp: thiếu ',' trước '*' 1> e: \ programming \ cprojt \ actiondb11 \ actiondb \ base \ world.h (36): lỗi C2061: lỗi cú pháp: định danh 'Agent' 1> e: \ programming \ cprojt \ actiondb11 \ actiondb \ base \ world.h (50): lỗi C2065: ' Tác nhân ': số nhận dạng không khai báo – wmac
Đăng mã hữu ích hơn nhiều so với việc đăng lỗi. Đăng * cả * là tốt nhất. –