我是构建用C++编写的可分发库的新手,我有点迷失了.我创建了一个.cpp文件,其中包含我希望库为用户提供的所有函数的包装器,我编写了2个.h文件,一个是公共文件,一个是私有文件.下面是我的头文件的虚拟示例:
class myclass
{
public:
public_function();
private:
}
Run Code Online (Sandbox Code Playgroud)
class myclass
{
public:
public_function();
private:
anotherClass instanceofClass;
}
Run Code Online (Sandbox Code Playgroud)
注意,实现public_function()在代码中使用"instanceofClass".我已经能够使用私有类编译没有问题的代码,并使用公共头和编译库编译和链接库与外部程序.但是,当执行该代码时,我遇到了分段错误,我怀疑这与缺少"instanceofClass"的正确初始化有关.
我做对了吗?我是否被迫在实现中实例化"instanceofClass" public_function()以使其正确初始化,或者还有什么我应该做的呢?
非常感谢.
你不能以两种不同的方式声明同一个类'myclass'.必须有一个类定义.如果你想隐藏实现的API,你想使用'Pimpl'成语.所以你的公共类有一个指向私有类的指针.例如:
public.h
class myclass_private;
class myclass {
private:
myclass_private* pimpl;
public:
myclass();
void public_function();
};
Run Code Online (Sandbox Code Playgroud)
public.cpp
myclass::myclass() {
pimpl = new myclass_private;
}
void myclass::public_function() {
pimpl->private_function();
}
Run Code Online (Sandbox Code Playgroud)
private.h
class myclass_private {
public:
void private_function();
};
Run Code Online (Sandbox Code Playgroud)