我想了解一個來自「api設計爲c + +」書(p。70)的疙瘩示例。「api設計爲c + +」:C++丘疹訪問
// autotimer.h
class AutoTimer
{
public:
explicit AutoTimer(const std::string &name);
AutoTimer();
// allow access from other classes/functions in autotimer.cpp
class Impl;
private:
Impl* mImpl;
}
從文字和例子,我將承擔這就是可以從autotimer.cpp
就像在下面的例子中free_f()
宣佈免費功能訪問的AutoTimer::Impl
成員。
// autotimer.cpp
class AutoTimer::Impl
{
public:
std::string s;
}
void free_f(AutoTimer a){
std::cout << a.mImpl->s << std::endl;
}
但是,我無法得到這個工作。可悲的是,這本書沒有提供任何進一步的細節。那麼,如何修改free_f()
以訪問Impl
的私人成員?
是我更加明確,註釋(和第一個例子)
// allow access from other classes/functions in autotimer.cpp
是直接從書「API設計的C++」,我想知道這意味着什麼。
'a'不是指針。 'mImpl'是一個指針。 – juanchopanza
'mImpl'是'AutoTimer'的'private'成員,所以免費函數將無法訪問它。 –
......除非它是「朋友」功能。 –