使用另一个类C++构造一个类

aud*_*dio 5 c++ class

我是C++的新手,最近开始研究面向目标的编程.我想编写自己的线性代数模块来处理三维向量和3x3矩阵.我试图将矩阵定义为由三个向量组成的类.

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;
                }
         };
Run Code Online (Sandbox Code Playgroud)

但是,我收到编译错误:

In constructor `matrix::matrix(vector, vector, vector)':
no matching function for call to `vector::vector()'
Run Code Online (Sandbox Code Playgroud)

我猜这个程序不知道如何使用我定义的向量类构造矩阵.但是我不明白为什么.如果有人能解释,我将非常感激.

bil*_*llz 6

您需要m1,m2,m3按成员初始化列表初始化您的成员:

matrix (const vector& a, const vector& b, const vector& c)
: m1(a),m2(b),m3(c)
Run Code Online (Sandbox Code Playgroud)

请注意以下事项:

  • 此表单只能与构造函数一起使用.
  • 您必须(至少在C++之前的版本11中)使用此表单初始化 非静态const数据成员.
  • 您必须使用此表单初始化参考数据成员.

另外,请注意,std::vector您可能希望将自己的向量重命名为void命名冲突,并且最好vector通过const引用.