forward-declaration

    2熱度

    2回答

    我有問題實現像下面這樣的結構。這個想法是,我在某個頭文件中定義了一個實用函數,它分配了某種資源。爲了減輕客戶自己解放它的必要性,我想將它包裝成一個智能指針。 不幸的是,我不知何故需要刪除類型的客戶端,並有麻煩轉發 - 適當地聲明它。我現在的解決方案看起來像這樣,導致多個定義錯誤,因爲刪除程序是重新定義的,每增加一個包含utility.h 這是我正在尋找的優雅解決方案嗎? // utilities.

    2熱度

    2回答

    我發現最新的Xcode 7.0中的一個錯誤讓我們非常惱火,因爲它使我們大多數的C++代碼無法調試。經過大量實驗後,我可以用最少量的代碼重現它。 在某些情況下,不可能在LLDB的C++類中看到成員。看來,三個條件必須存在該缺陷出現: 類向前聲明 類有一個virtual方法 類是預編譯的頭 內部聲明 我在問其他人是否已經知道該錯誤,並且建議如何向LLVM或Apple?報告該錯誤。 重現步驟: head

    -1熱度

    1回答

    我試圖訪問我的父類的方法,請參見代碼: #include <wx/wx.h> #include <wx/taskbar.h> #include <iostream> #include "appicon.xpm" class MyFrame; // forward class mywxTaskBarIcon : public wxTaskBarIcon { private:

    2熱度

    1回答

    我有一個類來控制所有的IO來自/來自設備。當線程發出IO請求時,它將被添加到FIFO隊列中,以防當時處理另一個IO請求。只要IO請求完成,它就會從隊列中彈出,並處理下一個IO請求。 留出多餘的功能,成員變量,並構建函數/ dtors,我類佈局像這樣: class IOInterface { public: struct ReadRequest: public IOReques

    0熱度

    1回答

    我有A類,它必須實現一些功能。由於實現它們中的一個需要它自己的數據結構,我假設A包含另一個B類,它具有所有需要的數據結構和功能。但是,B也需要使用A的數據結構和功能。我使用了兩個使用前向聲明調用對方的類。但仍然存在問題。例如,我需要使A中的所有數據結構公開,以便B可以訪問它。我嘗試使用朋友類,但是當我將B聲明爲具有實現B的功能的子類的抽象類時,我需要將A的所有數據結構作爲公共的。因爲朋友類不適用於

    10熱度

    1回答

    下面的代碼編譯,並給出結果正如人們所預料的(GCC和鐺): template <typename T> struct Derived; struct Base { template <typename T> void foo(T * const t) { dynamic_cast<Derived<T> * const>(this)->bar(t);

    0熱度

    2回答

    我有這樣的事情: struct v_with_holder { // bunch of fields holder h; // does not name a type }; typedef boost::variant</* such types, */v_with_holder/*, many others */> struct_v; class holder {

    2熱度

    1回答

    我需要在我的頭文件以前瞻聲明一個類,像這樣: class MyStaticClass; 我明白,爲什麼不能向前聲明這個類的數據成員。我曾經認爲你可以向前聲明函數。我想聲明這個類的靜態函數,就像這樣: class MyStaticClass; static int MyStaticClass::AddTwoNumbers(const int a, const int b); 這雖然給了我一

    0熱度

    1回答

    在以下代碼中,this正在調用globals.cpp命名空間中的變量實際全局變量。 globals.h #ifndef GLOBALS_H_ #define GLOBALS_H_ namespace Constants { // forward declarations only extern const double pi; extern const dou

    0熱度

    1回答

    我得到錯誤代碼C2512,這是沒有適當的默認構造函數可用。然而,在我看來,一切都應該工作,所以我有點困惑如何讓這個編譯。 這裏是頭文件代碼: namespace MyNamespace { ref class ForwadDeclaredClass; public ref class MyClass { public: MyClass();