试图使用指针访问类外部的私有变量,类外部有成员函数
Trying to use pointer to access private variable outside class, with member functions outside class
我正试图让我的头围绕指针,所以我一直在阅读和尝试的事情。目前,我试图把成员函数外的类,但能够从主函数内部访问一个私有变量。从我所读到的,这是不能做到的,除非我有一个指针内的类。所以我试着把一个函数返回一个指针到我的私有变量在类内,与所有其他成员函数在类外。然而,当我试图读取私有变量时,我遇到了编译问题。
我试过阅读其他帖子并尝试他们的解决方案,但我只是越来越困惑。理想情况下,我想有一个名为"区域"的成员函数在类之外,传递一个指向私有变量"半径"的指针,并返回该区域。
这是我目前拥有的:
#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;
}
演示相关文章:
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 堆栈/帧指针作为外部变量
- const_cast const 方法中的"this"将"this"分配给外部变量?
- 外部变量的初始化
- 如何在命名空间中初始化外部变量
- 将全局外部变量的私有版本与 OpenMP 结合使用
- 使用外部变量会导致"unsigned char"错误LNK2001
- 为什么通过复制捕获 lambda 具有与外部变量相同的地址
- 我们是否应该在项目中包含的所有文件中声明外部变量
- 如何将 Wifi.localIP() 转换为字符串并将其存储到外部变量
- 具有仅在某些情况下引用外部变量的属性的类
- C 中的外部变量
- Xcode C++外部变量链接器错误
- 使用外部变量时的多重定义错误
- C 和 C++ 中的外部变量有什么区别
- 默认情况下,非常量变量不被视为外部变量吗?
- 当外部变量在其他文件中声明不同时,如何使G 产生警告
- 是初始化为其默认值的外部变量
- 将外部变量传递给类 c++
- C++中有更多的类和外部变量