不能将方法返回的值用于另一个方法
Cannot use method returned value into another method
所以我一直在尝试在另一个方法中使用我的类中某些方法的返回值,但我遇到了这个问题"无法解析标识符">
class Puncte{
public:
double mx;
double my;
Puncte(double x, double y) {
mx = x;
my = y;
}
double distanta (){
double r = sqrt(mx*mx + my*my);
return r;
}
double phi (){
double unghi = atan(my/mx) * 180.0 / PI;
if(unghi > 0 && mx < 0 && my < 0) unghi = unghi + 180;
if (unghi < 0 && mx>0 && my < 0) unghi = unghi + 360;
if (unghi < 0 && mx<0 && my > 0) unghi = unghi + 180;
return unghi;
}
virtual mprint(){
printf("r=%.3f; phi=%.3fn",r,unghi) ; //unable to resolve identifier
}
};
有人可以帮忙吗? 谢谢:)
使用@super的建议和一点警告修复。
按照@super的建议,两个重要的变化是行:
printf("r=%.3f; phi=%.3fn",distanta(),phi());
变量 'r' 和 'unghi' 都是成员函数的本地变量,不能在这些函数之外访问。 "distanta((" 和 "phi((" 成员函数准确地提供了 printf 中所需的内容,并且是获取所需值的完美方式。
另一个变化是明确指出 mprint(( 是一个 void:
void mprint(){
C++中的所有函数(甚至是main!(都必须具有返回类型。 还删除了"虚拟",因为没有派生类(我不得不将函数移动到类的公共部分以使其保持虚拟(。
我添加了包含和main((函数,以便任何阅读此代码的人都可以将其剪切并粘贴到他们的编译器中,而无需付出任何努力即可获得工作版本。
进一步的清理将 mx 和 my 转换为私有变量,以防止类的用户能够修改这些变量。
#include <cmath>
#include <cstdio>
#include <iostream>
class Puncte{
private:
double mx;
double my;
public:
Puncte(double x, double y) {
mx = x;
my = y;
}
double mx() {return mx;}
double my() {return my;}
double distanta (){
double r = sqrt(mx*mx + my*my);
return r;
}
double phi (){
double unghi = atan(my/mx) * 180.0 / M_PI;
if(unghi > 0 && mx < 0 && my < 0) unghi = unghi + 180;
if (unghi < 0 && mx>0 && my < 0) unghi = unghi + 360;
if (unghi < 0 && mx<0 && my > 0) unghi = unghi + 180;
return unghi;
}
void mprint(){
printf("r=%.3f; phi=%.3fn",distanta(),phi()) ; //unable to resolve identifier
}
};
int main() {
Puncte puncte(3.5, 8.9);
std::cout << "Point(" << puncte.mx() << ", " << puncte.my()
<< "): radius = " << puncte.distanta() << std::endl;
return 0;
}
输出:
$> main
Point(3.5, 8.9): radius = 9.56347
Process finished with exit code 0
相关文章:
- 使用在用于SFINAE的void_t中具有参数的方法
- 不能将方法返回的值用于另一个方法
- 如何编写 operator= 用于使用虚拟方法与非平凡成员的匿名联合
- 一个模板方法,用于同时接受常量和非常量参数
- C++ SFINAE 用于方法和装饰器组
- 一种优雅或至少可行的方法,用于使用和接受具有重载方法和运算符的不同大小的文字数组常量
- std::is_invocable 用于测试任意方法是否存在的语法(不仅是运算符())
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 回调方法显示错误,类型为"void(*)"的值不能用于初始化类型的实体
- 生成用于测试的随机结构的通用方法
- 组织从内存读取的数据的最佳方法(用于调试)c++
- 将 2D 矢量转换为 C 类型的最佳方法(适用于 SGX 飞地)
- 是否有一种方法可以将C 代码用于Node-Red中
- 将对象方法从向量应用于C 的第二个向量中的对象
- 如何从 pjsip 发送电子邮件.是否有任何可用于发送电子邮件的默认方法
- Unity3D 导入 C++ DLL 用于按引用方法传递
- 指向 objc 类成员方法的函数指针,用于C++
- 将衍生的类方法用于基类方法
- 方法用于最快的分配,并且不需要将动态大小的数组对象作为局部变量
- 专门化运算符的最佳方法<<用于 std::ostream 和 std::vector 与通用模板函数?