gpt4 book ai didi

c++ - 在C++中将类导出到静态库时,如何隐藏类的私有(private)函数?

转载 作者:行者123 更新时间:2023-11-30 04:08:42 35 4
gpt4 key购买 nike

如,

//this is myclass.h
class myclass
{
public:
int publicfunction();
private:
int myprivatefunction();
};

//myclass.cpp

#include "myclass.h"
int myclass::publicfunction()
{myprivatefunction();
blabla...}

int myclass::privatefunction()
{blabla...}

因此,为了用户可以访问该类,我们将提供头文件给用户。但是我们不应该隐藏类的内部实现细节吗???我的意思是,当用户获取myclass.h时,他们会发现该类包含一个私有(private)函数myprivatefunction

最佳答案

您可以在 struct

中导出私有(private)成员
//this is myclass.h
class myclass{
private:
struct myClassPrivateMembers;
myClassPrivateMembers* privParts;
public:
// ...
};

在 *.cpp 文件中:

//this is myclass.cpp
struct *myClassPrivateMembers{
int myprivatefunction();
}

myclass::myclass(){
privParts = new myClassPrivateMembers;
};

这样用户将无法看到您隐藏在 myClassPrivateMembers 中的内容,因为它们将位于 *.cpp 文件中,而不是在头文件中声明。

这被广泛称为 "pimpl" idiom .

关于c++ - 在C++中将类导出到静态库时,如何隐藏类的私有(private)函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21693052/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com