我正在尝试创建一个矩阵类,其中每个成员都是一个分数;而不是浮点数或int。这是分数类的代码 fraction.h
class fraction{
private:
int num, den;
public:
fraction();
fraction(int, int);
fraction& operator=(const fraction&);
};
Fraction.cpp
#include "fraction.h"
fraction::fraction(){
num = 0;
den = 0;
}
fraction::fraction(int a, int b){
num = a;
den = b;
}
fraction& fraction::operator=(const fraction& lhs){
num = lhs.num;
den = lhs.den;
return *this;
}
我正在声明矩阵类,如下所示。
#include "fraction.h"
class matrix:public fraction{
private:
fraction **mt(int, int);
fraction **unity(int, int);
int sz;
public:
matrix();
matrix(fraction**, int);
~matrix();
};
如何初始化矩阵类?我尝试过很多东西,但似乎都没有。这些指针只是不接受任何值。
答案 0 :(得分:1)
您定义的Matrix类中没有指针。此外,没有理由继承Fraction(Matrix包含分数,但它本身不是分数)。
为避免指针,您可以使用C ++向量,但它们是一维的,因此一种策略可以将矩阵线性化为向量。
#include <vector>
class Matrix { // does *not* inherit from fraction!
private:
int rows_;
int cols_;
std::vector<Fraction> data_;
public:
Matrix(int rows, int cols) : rows_(rows), cols_(cols),
data_(rows * cols) {}
const Fraction& operator()(int i, int j) const {
assert(0 <= i && i < rows_);
assert(0 <= j && j < cols_);
return data[i * cols_ + j];
}
};
Matrix m(5, 8);
cout << m(3, 1);
答案 1 :(得分:0)
你需要初始化两个数组指针,如** mt两次:首先,每一行;第二,在每一行,init列