我正在調試與其代碼不可用的第三方庫進行交互的應用程序,只有頭文件和.so文件可用。現在我可以將它加載到調試器中,並檢查在第三方庫中聲明的類的私有成員的變量值,但由於對象數量巨大,我想創建一些機制將其打印在控制檯上,以供我稍後分析。 我想出了這樣的事情將模板參數作爲模板類的朋友
ThirdPartyHeader
class A
{
private:
int i;
};
我沒有包括在上述類的額外細節
Debugprinter.cpp
#include <thirdpartheaders>
template <typename T> class debugprinter
{
friend class T;
public :
void printonconsole()
{
T a;
std::cout << std::endl << a.i << std::endl;
return;
}
}
現在我試圖編譯高於此但似乎我不能聲明未定義類型T作爲我的模板類的朋友,並得到這個錯誤
錯誤:我是不是從X :: ACC()
現在我可以通過創建非模板debugprinter但只是出於好奇解決此問題訪問是有辦法,我可以創建一個模板類,它會是它的輸入類型參數的朋友?
感謝
如果您不能修改'A'有'debugprinter'作爲朋友,沒有標準的解決方案來訪問'A'的私人成員。您可以使用的所有技術都是未定義行爲。 – syam