首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有与调用Structured_Matrix::Structured_Matrix()匹配的函数

没有与调用Structured_Matrix::Structured_Matrix()匹配的函数
EN

Stack Overflow用户
提问于 2021-04-07 05:14:41
回答 2查看 34关注 0票数 1

我是一个学生,我的作业中有一个错误需要帮助,我们目前正在学习继承和多态性。

Symmetric_Matrix是Structured_Matrix的派生类

Symmetric.cc,这就是错误所在

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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);
};
#endif

Structured.h

代码语言:javascript
复制
#ifndef STRUCTURED_MATRIX_H
#define STRUCTURED_MATRIX_H
#include <iostream>

class Structured_Matrix 
{
public:
 Structured_Matrix(int n, double value = 0.0);
};
#endif
EN

回答 2

Stack Overflow用户

发布于 2021-04-07 05:20:13

Structure_Matrix不包含默认构造函数,但此处

代码语言:javascript
复制
Symmetric_Matrix::Symmetric_Matrix (int n, double value)
{
    ...
}

您使用的是默认构造函数,因为您没有显式地调用任何其他构造函数。您很可能希望调用所提供的构造函数。

代码语言:javascript
复制
Symmetric_Matrix::Symmetric_Matrix (int n, double value)
: Structured_Matrix(n, value)
{
    ...
}
票数 0
EN

Stack Overflow用户

发布于 2021-04-07 05:23:14

Structured_Matrix::Structured_Matrix()Structured_Matrix的默认(无参数)构造函数。

Structured_Matrix默认构造函数将作为Symmetric_Matrix构造的一部分进行调用。

如果你想显式调用另一个Structured_Matrix构造器(就像你定义的那个),那么你需要在你的Symmetric_Matrix构造器初始化器列表中这样做:

代码语言:javascript
复制
Symmetric_Matrix::Symmetric_Matrix (int n, double value)
    : Structured_Matrix(n, value)
{
    // ...
}

或者您需要提供一个(可能受保护的) Structured_Matrix默认构造函数:

代码语言:javascript
复制
class Structured_Matrix 
{
public:
 Structured_Matrix(int n, double value = 0.0);

protected:
 Structured_Matrix() = default;  // Defaulted default constructor
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66976536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档