Tôi khá mới đối với C++ nên đây có thể là một câu hỏi tầm thường:Làm cách nào để trả về đúng mảng (thành viên lớp) trong C++?
Lớp của tôi có biến thành viên riêng là một mảng. Tôi cần phải trả lại mảng đó, nhưng tôi không chắc chắn làm thế nào để làm điều đó đúng.
class X {
// ...
private: double m_Array[9];
public: double* GetArray() const { return m_Array; }
};
Có vấn đề gì với mã này không? Điều này trả về một con trỏ đến thành viên lớp, phải không? - vì vậy nếu tôi lấy mảng đó từ một thể hiện của lớp này và sửa đổi nó (từ bên ngoài lớp), mảng thành viên lớp ban đầu cũng sẽ bị thay đổi? Nếu đúng như vậy, làm cách nào để tôi trả lại bản sao của mảng đó?
xem xét 'std :: vector < double >' nếu kích thước mảng không cố định (trong ví dụ của bạn có vẻ như cố định, vì vậy đừng lo lắng). Thêm lợi ích: bạn có thể trả về một tham chiếu đến vectơ. – hochl
Thông thường với các đối tượng bạn đóng gói dữ liệu và hành vi. Có một lý do 'X' không thể làm những gì bạn muốn? [Nói, đừng hỏi] (http://pragprog.com/articles/tell-dont-ask). –