如何从另一个类参数访问类构造函数参数

阿兹别克马沙里波夫

与C ++构造函数争论不休

因此,我只是来自TS / JS / Py,并试图了解C ++概念。但是我正在努力使用类的构造函数的参数来声明参数的默认值。这是我要运行的代码:

double Phythagorean_Hypotenuse (int& a, int& b ) {
    return sqrt((a * a) + (b * b));
};

class Triangle {
    public:
      int a;
      int b;
      double c;
      Triangle(int a_param, int b_param, double c_param = Phythagorean_Hypotenuse(a_param, b_param)) {
            a = a_param;
            b = b_param;
            c = c_param;
      }
};

和主要功能的内部

Triangle mytri_1(10, 20);
std::cout << mytri_1.a << std:endl;

但是,当我尝试运行此代码时,IDE向我抛出了一些错误,例如

[Error] 'a_param' was not declared in this scope

要么

[Error] call to 'Triangle::Triangle(int, int, double)' uses the default argument for parameter 3, which is not yet defined

因此,请能解决这个问题的人可以回答这个问题吗?

谢谢。

阿纳斯塔丘

有一些问题会阻止您的代码编译,即:

  1. 构造函数没有返回类型。
  2. double c_param = Phythagorean_Hypotenuse(a_param, b_param)对于参数无效,a_param, b_param将无法识别。

推荐更改:

由于假设计算的结果很可能是十进制值,因此c应为double

您可以执行以下操作:

运行样本

#include <iostream>
#include <cmath>

double Phythagorean_Hypotenuse (int& a, int& b ) {
    return sqrt((a * a) + (b * b));
};

class Triangle {
    public:
      int a;
      int b;
      double c; //should be double

      //initializer list is a good practice for member initialization
      Triangle(int a_param, int b_param) 
          : a(a_param), b(b_param), c(Phythagorean_Hypotenuse(a, b)) {} 
};

int main(){

    Triangle mytri_1(10, 20);
    std::cout << mytri_1.a << std::endl;
    std::cout << mytri_1.b << std::endl;
    std::cout << mytri_1.c << std::endl;
}

输出:

10
20
22.3607

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在另一个类的构造函数中使用一个类作为参数

如何使用一个类的构造函数作为Java中另一个类的对象的参数?

如何从另一个包向 Java 类添加无参数构造函数?

如何使用作为另一个类的函数的参数访问的对象的函数?

具有另一个模板类的参数化模板类构造函数

如何从另一个类访问具有受保护的构造函数的类

用参数初始化另一个类构造函数中的对象

C ++中带有另一个模板类作为参数的构造函数

多次修改放置在另一个类的构造函数的参数中的对象

使用来自另一个类的参数复制构造函数

访问另一个类中的参数

如何在python数据类的默认参数中访问另一个参数?

不确定如何使用另一个类的对象创建带有参数的构造函数

如何将对象的动态数组传递给另一个类的参数化构造函数?

使用带有另一个类似类的参数的辅助构造函数创建数据类实例

解耦依赖于另一个类的类,该类的构造函数接受参数

从同一类中的另一个构造函数访问构造函数变量

如何将一个类的函数作为另一个类的另一个函数的参数传递

如何从另一个类访问函数 - Flutter

从另一个类使用私有类构造函数访问内部子类

如何将另一个类的函数作为参数传递?

如何在react native中使用另一个类的参数调用函数?

如何使用另一个类的公共成员函数作为参数调用线程

如何键入依赖于另一个类参数值的类参数?

您如何访问另一个类中一个类的成员函数?

为什么将静态对象作为参数传递给另一个类的构造函数时为null

构造函数中的 C++ 语法错误 - 参数是对来自另一个类的对象的引用

C ++-从另一个类构造函数调用一个类构造函数

如何为另一个构造函数调用的构造函数提供参数?