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

时间:2018-10-24 21:06:05

标签: c++ oop

因此,我一直试图在其他方法中使用类中某些方法的返回值,但遇到了“无法解析标识符”问题

useDb()

有人可以帮忙吗? 谢谢:)

1 个答案:

答案 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