Jestem nowy w C++ i ostatnio podjąłem studia nad programowaniem zorientowanym na obiekt. Chciałem napisać własny moduł liniowej algebry przetwarzający trójwymiarowe wektory i matryce 3x3. Próbowałem zdefiniować macierz jako klasę złożoną z trzech wektorów.Konstruowanie klasy przy użyciu innej klasy 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;
}
};
Jestem jednak otrzymuję błąd kompilacji:
In constructor `matrix::matrix(vector, vector, vector)':
no matching function for call to `vector::vector()'
Domyślam się, że nie robi program, wie jak skonstruować macierz przy użyciu klasy wektor zdefiniowałem. Jednak nie rozumiem, dlaczego. Jeśli ktokolwiek mógłby wyjaśnić, byłbym bardzo wdzięczny.
Użyj listy initializer zamiast przypisując je w ciele konstruktora. –
możliwy duplikat [Czym jest ta dziwna składnia dwukropka w konstruktorze?] (Http://stackoverflow.com/questions/1711990/what-is-this-weird-colon-member-syntax-in-the-constructor) –
możesz chcieć umieścić swoją klasę wektorową w przestrzeni nazw, aby zapobiec pomyłce z 'std :: vector'. Ponieważ kiedy czytałem twoją klasę macierzy, poważnie myślałem, że zamierzasz użyć 'std :: vector', ale nie w tym przypadku. – hetepeperfan