[英]declare a class member function to use before linking
我想使用其他模塊中存在的類,並且可以在鏈接中使用。 頭文件的大小很大,所以我不想在當前模塊中包含頭文件。
我試圖通過
foo類;
int foo :: getValue();
這里的getValue()是我要使用的foo的成員函數。
現在,當我編譯代碼時,在鏈接為
error: forward declaration of 'struct foo'
我在這里想念什么?
謝謝,
您不能轉發聲明的類成員,需要包含整個標頭。
此處正確的方法是減小標頭的大小。 如果它僅包含類定義,請保持原樣。 如果沒有,則有可能將其分成多個標題。
如果類定義很大,則表明您的設計存在錯誤,可能會被破壞。
僅當您不需要了解類的內部結構(即成員和/或大小)時,才可以使用類的前向聲明。
此技術的典型用法涉及類指針或引用:
class included_class;
class encapsulating_class
{
public:
void some_method(const& included_class_pointer) const;
private:
included_class * included_class_pointer;
};
使用此技術無法按照您指定的方式轉發聲明的類內部信息,並且需要包含類頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.