我是 C++ 的新手,最近开始学习面向目标的编程。我想自己写 处理三维 vector 和 3x3 矩阵的线性代数模块。我尝试将矩阵定义为由三个 vector 组成的类。
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;
}
};
但是,我遇到了一个编译错误:
In constructor `matrix::matrix(vector, vector, vector)':
no matching function for call to `vector::vector()'
我猜程序不知道如何使用我定义的 vector 类构造矩阵。 但是我不明白为什么。如果有人能解释一下,我将不胜感激。
最佳答案
您需要通过成员初始化列表初始化您的m1,m2,m3
成员:
matrix (const vector& a, const vector& b, const vector& c)
: m1(a),m2(b),m3(c)
注意以下几点:
- 此形式只能与构造函数一起使用。
- 您必须(至少在 C++11 之前的版本中)使用这种形式来初始化 非静态常量数据成员。
- 您必须使用此表单来初始化一个引用数据成员。
另外,请注意,有 std::vector
,你可能想重命名你自己的 vector 以避免命名冲突,你最好通过 const 引用传递 vector
。
关于c++ - 使用另一个类 C++ 构造一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510008/