簡體   English   中英

在公共 class 上聲明一個私有方法,該方法采用私有類型的 arguments

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM