template-specialization

    2熱度

    1回答

    我有一個令人生畏的設計問題,我懇求一些建議。簡而言之,我有兩個基類A和B,AImpl<T>和BImpl<T>分別從A和B繼承。我需要的是從一個多態A*指針指向一個AImpl<T>對象檢索(靜態)BImpl<T>*,但沒有A明確添加類似virtual B* getB()和AImpl<T>因爲B和BImpl<T>已經覆蓋它取決於A這將增加一個循環依賴。 AImpl<T>和BImpl<T>專門針對原始類

    11熱度

    1回答

    我有一個模板類,我聲明在一個方法的標題與沒有在該標題中的方法的定義。在.cc文件中,我定義了方法的專業化版本,但沒有在頭文件中聲明它們。在一個不同的.cc文件中,我爲不同的模板參數調用了專門化的方法。它看起來像這樣: 了foo.h: template<typename T> class Foo { public: static int bar(); }; foo.cc: #in

    1熱度

    2回答

    我顯然誤解有關模板特重要的東西,這是因爲: template<typename type> const type getInfo(int i) { return 0; } template<> const char* getInfo<char*>(int i) { return nullptr; } 失敗,編譯: src/main.cpp:19:24: error: no function

    3熱度

    3回答

    以下代碼片段演示了我想要實現的內容,即創建兩個模板特化(好吧,這裏是主模板和專業化),將使用一個用於非const成員函數,一個用於const成員函數: // instantiate for non-const member functions template <typename C, void(C::*F)()> struct A {}; // instantiate for const

    4熱度

    3回答

    我遇到了C++模板難題。我試圖把它縮小到最低限度,現在我甚至不確定我想要做什麼是可能的。看看下面的代碼(在一些.h文件中)。 template<typename T> class A { public: template<typename S> void f(S x); }; class B1 { }; template<typename S> class B

    6熱度

    4回答

    在分隔模板聲明和定義的中等規模或者甚至是大型複雜項目中,減少編譯時間非常有用 。然而,在一個複雜的代碼中,小程序員的錯誤可能導致未被注意的行爲改變,例如 ,例如 。一個通用版本被調用而不是專門化。 示例: 由於缺少聲明,模板專門化變得不可見。 ///////////////////// file A.hpp ///////////////////// #include <iostream>

    0熱度

    2回答

    我真的不知道如何調用這個線程。 情況如下。我有一個模板類Array<T>: template <typename T> class Array{ private: T* m_cData; int m_nSize; static int s_iDefualtSize; public: Array(); Array(int nSize); }

    3熱度

    1回答

    我有一個奇怪的問題,其中一個與-Ox編譯代碼編譯好,但與-g編譯的代碼上鍊接失敗,出現以下錯誤: Undefined symbols for architecture x86_64: "stupid<dummy>::t", referenced from: stupid<dummy>::operator()(int, int) const in main.o 再現這個問題

    0熱度

    1回答

    如果我想在條件爲I == 10時將斷點設置爲構造函數該怎麼辦? template < typename T, int I > class C { public: C<T, I>() { cout << I << endl; } };

    1熱度

    1回答

    我想專門研究一個模板類,使它對Base類型的指針和所有其他指針類型的行爲有所不同。我嘗試使用啓用if。但它不是我想要的方式。任何人都可以告訴我該怎麼做。 ,我試圖代碼: class Base { }; class Derived:public Base { }; class Non_base { }; template<class T,class Enable=void>