在接受私有类型参数的公共类上声明一个私有方法
Declare a private method on a public class which takes arguments of private type
我正在C++-17中编写一个套接字库,它有一个公共类Socket
(即我在.hpp
文件中声明它(。这个类应该是用户和库之间的接口。
我有一个私有类型(在.cpp
文件中声明(Packet
,用于表示内存中的数据包。类型Socket
有一些以Packet
为参数的私有助手方法。
如果我试图只在.cpp
文件中声明helper方法,编译器会抱怨不存在这样的成员。如果我试图在.hpp
中声明该方法,那么我无法命名参数类型,因为它应该是私有的。
这是公共类声明(在.hpp
中(:
class Socket {
private:
// ...private attributes
// void serialize(Packet p, uint8_t buffer[64]); // This is the helper function. `Packet` is private type
public:
// ...constructors and stuff
}
这就是我试图在实现文件中定义函数的方式:
void Socket::serialize(Packet p, uint8_t buffer[64]) {
// ...a lot of things
}
我应该如何在不公开库内部的情况下声明这样的函数呢。
您可以使Packet
成为Socket的嵌套私有类,这意味着它不会暴露给库的用户。
class Socket {
private:
class Packet {
...
};
public:
...
};
相关文章:
- 基类可以声明虚拟方法但不定义它吗?仍然在派生类中定义
- 单独的类声明和方法定义文件问题
- 这个模板声明有什么问题
- Google-Mock 一个已经声明的方法
- 我的类中有方法的指针数组,但我不能调用我的方法.代码如下
- 为什么我需要在子类中重新声明"虚拟"方法?[C++/多态性]
- 初始化静态std :: multimap在其中声明的方法
- 是否可以在不声明其方法的情况下保留裸类定义?
- 如何处理一个子类有方法,而另一个没有方法的子类?
- 有方法的类,我不明白类的外观
- 是否可以为包中的每个参数声明一个方法
- 是否有方法为模板参数指定所需的定义
- 符号"重新声明(有符号/无符号,精度)与
- 当底层OpenGL状态被修改时,我应该声明一个方法常量吗
- 使用派生类中声明的方法
- 在基没有虚拟方法的派生类中声明虚拟方法是错误的吗
- 为什么 noexcept 说明符的作用域不在声明的方法内?
- 我应该声明一个方法 no除非它在正确使用时永远不会抛出
- 动态调度在类外部声明的方法
- 声明 RValue 方法(例如 void operation() 和 &;) 虚拟 C++1x )是否有意义