gpt4 book ai didi

c++ - 私有(private)/公共(public) header 示例?

转载 作者:IT老高 更新时间:2023-10-28 12:53:40 26 4
gpt4 key购买 nike

谁能给我一个公共(public)和私有(private)标题如何工作的例子?我在网上做了一些阅读,但我似乎无法通过示例代码找到很多有用的信息。有人建议我应该使用私有(private) header 来分隔代码的公共(public)和私有(private)部分以创建静态库。经过一番阅读,我对它的工作原理有了一个大致的了解,但我真的很感激有一个很好的例子来帮助我入门。具体来说,我不太明白的是如何将接口(interface)函数放在我的公共(public)头文件中,而将私有(private)变量/函数放在我的私有(private)头文件中?谢谢!

编辑:

也许我的问题措辞不对,但我的意思是,例如,我有 myMath.h 和 myMath.cpp,而 myMath.h 有:

class myMath{
public:
void initialise(double _a, double _b);
double add();
double subtract();

private:
double a;
double b;
};

而 myMath.cpp 具有函数的实现。我怎样才能使 myMath.h 只有三个公共(public)函数,而私有(private)变量在另一个文件(例如 myMath_i.h)中定义,这三个文件的方式是在我创建一个静态库后,用户只需要 myMath.h。这也意味着 myMath.h 不能#include myMath_i.h。所以像:

myMath.h:

class myMath{
public:
void initialise(double _a, double _b);
double add();
double subtract();
}

和 myMath_i.h:

class myMath{
private:
double a;
double b;
}

当然这是不可能的,因为那时我将重新定义 myMath 类...

最佳答案

您有两个头文件 MyClass.h 和 MyClass_p.h 以及一个源文件:MyClass.cpp。

让我们看看里面有什么:

MyClass_p.h:

// Header Guard Here
class MyClassPrivate
{
public:
int a;
bool b;
//more data members;
}

MyClass.h:

// Header Guard Here
class MyClassPrivate;
class MyClass
{
public:
MyClass();
~MyClass();
void method1();
int method2();
private:
MyClassPrivate* mData;
}

MyClass.cpp:

#include "MyClass.h"
#include "MyClass_p.h"

MyClass::MyClass()
{
mData = new MyClassPrivate();
}

MyClass::~MyClass()
{
delete mData;
}

void MyClass::method1()
{
//do stuff
}

int MyClass::method2()
{
return stuff;
}

将您的数据保存在 MyClassPrivate 中并分发 MyClass.h。

关于c++ - 私有(private)/公共(public) header 示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2272735/

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