pimpl-idiom

    2熱度

    1回答

    我已經基本實現了一個提案,我的問題是,它已經完成了,如果是的話,在哪裏?和/或有更好的方式來做我在做什麼?對於這篇文章的長度感到抱歉,我不知道有更好的方式來解釋我的方法,而不是提供代碼。 我以前問的問題pimpl: Avoiding pointer to pointer with pimpl? 要在這裏再次解釋這個問題,基本上,可以說,我們已經有了一個接口interface和實施impl。此外,像

    3熱度

    2回答

    考慮下一個簡單的例子: 標題: // a.hpp #ifndef A_HPP #define A_HPP #include <memory> class A { public: A(); int foo(); private: struct Imp; std::auto_ptr<Imp> pimpl; }; #endif // A_

    5熱度

    4回答

    我正在嘗試使用pimpl模式並在匿名命名空間中定義實現類。這在C++中可能嗎?我的失敗嘗試如下所述。 有沒有可能解決這個問題,而無需將實現移動到名稱空間(或全局名稱空間)? class MyCalculatorImplementation; class MyCalculator { public: MyCalculator(); int CalculateStuff(i

    4熱度

    6回答

    我寫一個C++頭在我定義了一個 class A { // ... }; ,我想從外面的世界隱藏的(因爲它可能會改變,甚至在此標題的未來版本中將被刪除)。 還有一個B類在具有類A​​的一個對象作爲成員相同的標題: class B { public: // ... private: A a_; }; 什麼是從外界隱藏類A的一個適當的方式? 如果我把A的定

    0熱度

    4回答

    的更簡單的形式爲什麼不選擇這樣的設計: // A.hpp class A { public: void do_something(); }; // A.cpp #include "A.hpp" #include <vector> std::vector<int> impl_database_for_do_something; static void impl_he

    3熱度

    3回答

    如果您有一個對象B需要一個對象A的私有成員的副本,並且該私有成員被一個Pimpl隱藏,那麼如何在不暴露內部組件的情況下使其發生? // foo.h中 class Foo { private : struct impl ; impl * pimpl ; }; // Foo.cpp struct impl { std::string data; } //main.c

    0熱度

    1回答

    在this question我失敗問到如何使用不同的PIMPL實現依賴於一個模板參數實現。 也許這個例子ilustrates好什麼,我試圖做的: #include <iostream> template< int N, typename T > struct B { B() : c(new C<N>) {} template< int M > st

    0熱度

    3回答

    我想更好地理解如何在存在PIMPL慣用語的情況下使用靜態字段的方法。 考慮下面的代碼。 MyClass.h文件: #ifndef MYCLASS #define MYCLASS class MyClass{ public: void method(); static void static_method(); private: Type f

    1熱度

    2回答

    我正在嘗試爲將使用pimpl-idiom的庫定義接口。以下是我定義的典型接口類。 struct A { public: void func1(); void func2(); virtual void notif1(); virtual void notif2(); private: class AImpl; AImpl *impl;

    9熱度

    3回答

    d-pointers在Qt中被大量使用,它們是pimpl習語的實現。我知道pimpl習語的優點和缺點。但是我錯過了d指針實現的優點。 Here和here是d指針的樣本。 只是使用這個更簡單嗎? class MyClassPrivate; class MyClass { // interface methods private: MyClassPrivate *pimpl_;