我试图绕过指针,所以我一直在阅读和尝试。 目前我试图将成员函数放在类之外,但是能够从main函数内部访问私有变量。从我所读到的,除非我在课堂上有一个指针,否则无法完成。 所以我尝试了一个函数,它返回一个指向我的私有变量的指针,该类包含在类之外的所有其他成员函数。 但是,当我尝试读取私有变量时,我遇到了编译问题。
我试过阅读其他帖子并尝试他们的解决方案,但我只是变得更加困惑。 理想情况下,我希望有一个名为" area"的成员函数。在类之外传递一个指向私有变量的指针" radius"并返回该地区。
这就是我目前所拥有的:
#include <iostream>
#define PI 3.14159;
using namespace std;
class Circle{
private:
float radius;
protected:
float *radPtr = &radius;
public:
float getRadiusPtr(){
return *radPtr;
}
void getRadius();
void showRadius();
};
void Circle::getRadius() {
cout << "Enter Radius: "<< endl;
cin >> radius;
}
void Circle::showRadius(){
cout << "Radius: " << endl;
}
float Circle::area(*radPtr){
float ar;
float r = this.getRadiusPtr();
ar = PI * r * r;
}
int main(){
Circle c1;
c1.getRadius();
c1.showRadius();
cout << "Area: " << a << endl;
return 0;
}
答案 0 :(得分:1)
您不能在成员函数之外使用&radius
,因为没有特定对象的radius
成员应该获取地址。
此外,您的getRadiusPtr()
函数甚至不返回指针。它只返回radius
的值。
尝试:
float *getRadiusPtr() {
return &radius;
}
然后你就可以使用它:
int main() {
Circle c1;
c1.getRadius();
c1.showRadius();
float *r = c1.getRadiusPtr();
float a = PI * *r * *r;
cout << "Area: " << a << endl;
return 0;
}