[英]Is it possible to access private members of a class?
是否可以在c ++中訪問類的私有成員。
如果您沒有朋友功能,並且您無權訪問類定義
你的意思是使用一些指針算法來獲得訪問權限? 這是可能的,但絕對是危險的。 再看看這個問題: 訪問私人會員
我覺得有一些像這樣的舊學校伎倆:
#define private public
#include "header.h"
#define private private
但是你強烈勸阻我這樣做(我已經很快就讀到了C ++標准中關於這一點的說法) - 如果你想閱讀更多關於谷歌的信息“#define private public”
好吧,我可能會說rubish,但我認為你可以嘗試定義一個“twin”類,其中包含與要修改的類相同的成員但是使用不同的公共/私有修飾符,然后使用reintepret_cast將原始類轉換為您的類可以訪問私人會員。
它有點hacky ;-)
一些代碼來解釋這個想法:
class ClassWithNoAccess
{
public:
someMethod();
private:
int someVar;
};
class ClassTwin
{
public:
someMethod();
public:
int someVar;
}
在代碼中的某個地方:
ClassWithNoAccess* noAccess = new ClassWithNoAccess();
ClassTwin* twin = reinterpret_cast<ClassTwin *>(noAccess);
twin->someVar = 1;
編輯:所以像之前已經寫過的人一樣,這可能會有效,但標准並不能保證變量的順序與public和private修飾符一樣
即使有可能通過一些討厭的黑客 - 見前面的帖子 - 你也不應該這樣做。
封裝存在是為了一個非常好的目的,並且將類成員設置為私有意味着開發人員不打算任何人亂搞該成員。 那應該意味着
“您無需訪問此成員即可將公共接口用於其完整的預期范圍”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.