因此,我只是来自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
因此,请能解决这个问题的人可以回答这个问题吗?
谢谢。
有一些问题会阻止您的代码编译,即:
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] 删除。
我来说两句