簡體   English   中英

我可以在頭文件中省略智能指針的類型參數嗎?

[英]Can I omit the type arguments of smart pointers in my header files?

我正在建立一個C ++庫。 我有一個struct ,其中包含一個std::unique_ptr到另一個我想向用戶隱藏的struct

例如:

struct MyStruct {
    int x;
  private:
    std::unique_ptr<MyPrivateStruct> y;
};

現在,我需要在用戶可以包括的頭文件中指定MyStruct ,以便他們知道其布局。 但是,這要求我還公開MyPrivateStruct的標頭,但我不想這樣做。 由於unique_ptr的大小是相同的,而與類型無關,是否可以執行這樣的操作?

struct MyStruct {
    int x;
  private:
    std::unique_ptr<auto> y;
};

y的類型將由我的cpp文件確定。


這個問題與不能使用std :: unique_ptr <T>的問題並不完全相同其中T為前向聲明,因為該問題的答案是使用前向聲明。 這個問題是關於使用前向聲明時的問題。

當然!

struct MyPrivateStruct;

struct MyStruct {
    int x;
  private:
    std::unique_ptr<MyPrivateStruct> y;
};

MyPrivateStructstd::unique_ptr<MyPrivateStruct> y; 不必是完整類型

也就是說,您可以通過以下方式向前聲明它:

struct MyPrivateStruct;

y聲明之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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