不能将方法返回的值用于另一个方法

Cannot use method returned value into another method

本文关键字:方法 用于 另一个 返回 不能      更新时间:2023-10-16

所以我一直在尝试在另一个方法中使用我的类中某些方法的返回值,但我遇到了这个问题"无法解析标识符">

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