我是一个学生,我的作业中有一个错误需要帮助,我们目前正在学习继承和多态性。
Symmetric_Matrix是Structured_Matrix的派生类
Symmetric.cc,这就是错误所在
#include <iostream>
#include "./Symmetric_Matrix.h"
using namespace std;
Symmetric_Matrix::Symmetric_Matrix (int n, double value)
{
if (n == 0)
{
rows = 0;
cols = 0;
num = nullptr;
}
else
{
rows = n;
cols = n;
num = new double [rows * cols];
for (int i = 0; i < rows * cols; i++)
*(num + i) = value;
}
}Symmetric.h
#include <iostream>
#ifndef SYMMETRIC_MATRIX_H
#define SYMMETRIC_MATRIX_H
#include "./Structured_Matrix.h"
#include "./Symmetric_Matrix.cc"
using namespace std;
class Symmetric_Matrix : public Structured_Matrix
{
public:
Symmetric_Matrix (int n, double value = 0.0);
};
#endifStructured.h
#ifndef STRUCTURED_MATRIX_H
#define STRUCTURED_MATRIX_H
#include <iostream>
class Structured_Matrix
{
public:
Structured_Matrix(int n, double value = 0.0);
};
#endif发布于 2021-04-07 05:20:13
Structure_Matrix不包含默认构造函数,但此处
Symmetric_Matrix::Symmetric_Matrix (int n, double value)
{
...
}您使用的是默认构造函数,因为您没有显式地调用任何其他构造函数。您很可能希望调用所提供的构造函数。
Symmetric_Matrix::Symmetric_Matrix (int n, double value)
: Structured_Matrix(n, value)
{
...
}发布于 2021-04-07 05:23:14
Structured_Matrix::Structured_Matrix()是Structured_Matrix的默认(无参数)构造函数。
此Structured_Matrix默认构造函数将作为Symmetric_Matrix构造的一部分进行调用。
如果你想显式调用另一个Structured_Matrix构造器(就像你定义的那个),那么你需要在你的Symmetric_Matrix构造器初始化器列表中这样做:
Symmetric_Matrix::Symmetric_Matrix (int n, double value)
: Structured_Matrix(n, value)
{
// ...
}或者您需要提供一个(可能受保护的) Structured_Matrix默认构造函数:
class Structured_Matrix
{
public:
Structured_Matrix(int n, double value = 0.0);
protected:
Structured_Matrix() = default; // Defaulted default constructor
};https://stackoverflow.com/questions/66976536
复制相似问题