簡體   English   中英

在鏈接之前聲明要使用的類成員函數

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

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