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

标签 c++ class

我是 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/

相关文章:

c++ - 在 C++ 中获取 IP 地址的独立于平台的方法

c++ - OpenCV如何在使用单个静态图像时将速度 vector 绘制为箭头

c++ - 重载具有相同参数和不同返回类型的虚函数

c++ - NULL 指针问题?

java - 在 java 类中,括号中的代码如何/何时执行?

c++ - 为什么 C++ 类有两个名字?

android - Android NDK 上的谷歌测试未定义对 'typeinfo for testing::Test' 的引用

java - 在 Java 中实现类适配器模式

java - 为什么我需要创建我正在使用的类的实例?

RPG(角色扮演游戏)的类图示例