[英]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;
};
MyPrivateStruct
在std::unique_ptr<MyPrivateStruct> y;
不必是完整類型 。
也就是說,您可以通過以下方式向前聲明它:
struct MyPrivateStruct;
在y
聲明之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.