Tôi mới tham gia C++ và gần đây đã thực hiện nghiên cứu về lập trình hướng khách quan. Tôi muốn viết mô-đun đại số tuyến tính của mình xử lý các vectơ ba chiều và ma trận 3x3. Tôi đã cố gắng xác định một ma trận như một lớp bao gồm ba vectơ.Xây dựng một lớp học sử dụng một lớp khác C++
class vector {
public:
double n1, n2, n3;
vector (double a, double b, double c) {
n1 = a; n2 = b; n3 = c;
}
};
class matrix {
public:
vector m1, m2, m3;
matrix (vector a, vector b, vector c) {
m1 = a; m2 = b; m3 = c;
}
};
Tuy nhiên, tôi nhận được một lỗi biên dịch:
In constructor `matrix::matrix(vector, vector, vector)':
no matching function for call to `vector::vector()'
Tôi đoán rằng chương trình doesnt biết làm thế nào để xây dựng một ma trận bằng cách sử dụng lớp vector i xác định. Tuy nhiên tôi không hiểu tại sao. Nếu ai đó có thể giải thích, tôi sẽ rất biết ơn.
Sử dụng danh sách initializer thay vì gán cho chúng trong cơ thể constructor. –
có thể trùng lặp của [Cú pháp thành viên dấu hai chấm lạ này trong hàm tạo là gì?] (Http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-constructor) –
bạn có thể muốn đặt lớp vectơ của bạn bên trong một không gian tên để tránh nhầm lẫn với 'std :: vector'. Bởi vì khi tôi đọc lớp ma trận của bạn, tôi đã nghiêm túc nghĩ rằng bạn định sử dụng 'std :: vector', nhưng đó không phải là trường hợp. – hetepeperfan