[英]Declare a private method on a public class which takes arguments of private type
我正在用 C++-17 編寫一個套接字庫,它有一個公共的 class Socket
(即我在.hpp
文件中聲明它)。 這個 class 應該是用戶和庫之間的接口。
我有一個私有類型(在.cpp
文件中聲明) Packet
,用於表示 memory 中的數據包。 Socket
類型有一些以Packet
作為參數的私有輔助方法。
如果我嘗試只在.cpp
文件中聲明輔助方法,編譯器會抱怨不存在這樣的成員。 如果我嘗試在.hpp
中聲明該方法,那么我無法命名參數類型,因為它應該是私有的。
這是公共 class 聲明(在.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
}
這就是我嘗試在實現文件中定義 function 的方式:
void Socket::serialize(Packet p, uint8_t buffer[64]) {
// ...a lot of things
}
我應該如何 go 關於聲明此類功能而不公開庫內部。
您可以使Packet
成為 Socket 的嵌套私有 class,這意味着它不會暴露給您圖書館的用戶。
class Socket {
private:
class Packet {
...
};
public:
...
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.