试图使用指针访问类外部的私有变量,类外部有成员函数

Trying to use pointer to access private variable outside class, with member functions outside class

本文关键字:外部 变量 成员 函数 指针 访问      更新时间:2023-10-16

我正试图让我的头围绕指针,所以我一直在阅读和尝试的事情。目前,我试图把成员函数外的类,但能够从主函数内部访问一个私有变量。从我所读到的,这是不能做到的,除非我有一个指针内的类。所以我试着把一个函数返回一个指针到我的私有变量在类内,与所有其他成员函数在类外。然而,当我试图读取私有变量时,我遇到了编译问题。

我试过阅读其他帖子并尝试他们的解决方案,但我只是越来越困惑。理想情况下,我想有一个名为"区域"的成员函数在类之外,传递一个指向私有变量"半径"的指针,并返回该区域。

这是我目前拥有的:

#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;
}

你不能在成员函数之外使用&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;
}
演示