gpt4 book ai didi

c++ - 如何在继承类中创建一个父类变量数组作为私有(private)成员

转载 作者:行者123 更新时间:2023-11-28 08:12:24 24 4
gpt4 key购买 nike

我正在尝试创建一个矩阵类,其中每个成员都是分数;而不是 float 或整数。这是分数类的代码。
分数.h

class fraction{
private:
int num, den;
public:
fraction();
fraction(int, int);
fraction& operator=(const 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();
};

如何初始化矩阵类?我尝试了很多东西,但似乎都不起作用。这些指针只是不接受任何值。

最佳答案

您定义的 Matrix 类中没有指针。此外,没有理由继承分数(矩阵包含分数,但它本身不是分数)。

要避免指针,您可以使用 C++ vector ,但它们是一维的,因此一种策略可能是将矩阵线性化为 vector 。

#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);

关于c++ - 如何在继承类中创建一个父类变量数组作为私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8676137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com