gpt4 book ai didi

c++ - 公共(public)头类构造函数

转载 作者:太空狗 更新时间:2023-10-29 19:59:23 26 4
gpt4 key购买 nike

我是构建用 C++ 编写的可分发库的新手,但我有点不知所措。我创建了一个 .cpp 文件,其中包含我希望库为用户提供的所有功能的包装器,并且我编写了 2 个 .h 文件,一个公共(public)文件和一个私有(private)文件。下面是我的头文件的虚拟示例:

公共(public).h:

class myclass
{
public:
public_function();
private:
}

私有(private).h:

class myclass
{
public:
public_function();
private:
anotherClass instanceofClass;
}

请注意,public_function() 的实现在代码中使用了“instanceofClass”。我已经能够毫无问题地使用私有(private)类编译代码,并使用公共(public)头文件和编译库编译库并将其与外部程序链接。但是,在执行该代码时,我遇到了段错误,我怀疑这与缺少“instanceofClass”的正确初始化有关。

我做的对吗?我是否被迫在 public_function() 的实现中实例化“instanceofClass”以使其正确初始化,还是我应该做其他事情?

非常感谢。

最佳答案

您不能以两种不同的方式声明同一个类“myclass”。必须有一个单一的类定义。如果您想隐藏实现的 API,您需要使用“Pimpl”习惯用法。所以你的公共(public)类有一个指向私有(private)类的指针。例如:

公共(public).h

class myclass_private;
class myclass {
private:
myclass_private* pimpl;
public:
myclass();
void public_function();
};

公共(public).cpp

myclass::myclass() {
pimpl = new myclass_private;
}

void myclass::public_function() {
pimpl->private_function();
}

私有(private).h

class myclass_private {
public:
void private_function();
};

关于c++ - 公共(public)头类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435993/

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