因此,我一直试图在其他方法中使用类中某些方法的返回值,但遇到了“无法解析标识符”问题
useDb()
有人可以帮忙吗? 谢谢:)
答案 0 :(得分:1)
使用@super的建议和一些警告修复。
两个重要的变化在@super的建议行中:
printf("r=%.3f; phi=%.3f\n",distanta(),phi());
变量“ r”和“ unghi”都是成员函数的局部变量,不能在这些函数之外访问。成员函数“ distanta()”和“ phi()”提供了printf中所需的内容,并且是获取所需值的理想方法。
另一个变化是明确指出mprint()是无效的:
void mprint(){
C ++中的所有函数(甚至main!)都必须具有返回类型。还删除了“虚拟”,因为没有派生类(并且我不得不将函数移至该类的公共部分以使其保持为虚拟)。
我添加了include和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=%.3f\n",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