pimpl-idiom

    1熱度

    2回答

    我對PImpl進行了相當廣泛的使用,並且我發現自己正在揮之不去的是準確初始化Pimpl結構成員的地方。選項是爲Private結構創建一個構造函數,並在那裏初始化它們,或者在主類的構造函數中初始化它們。 myclass.hpp: class MyClass { public: MyClass(); ~MyClass(); private: struct Privat

    0熱度

    1回答

    我有一大堆相關indicies的一種模板層次,看起來像 template <int level> struct index{ index<level - 1> w; int x, y; }; template <> struct index<0> { int x, y; }; template <int level> struct data; 並應該生成,並通

    0熱度

    2回答

    在我目前的工作中,我看到在cpp文件中的未命名命名空間中聲明的變量,並且只會被該類使用,就好像它們是成員變量一樣。 我把它看作是一種有趣的方法,它只保存.h中的接口信息和.cpp中的接口信息,並且比通常的pimpl習慣用法的工作更少。 我看到人們一直在使用pimpl,但從來沒有這種方法,是否有任何問題呢?

    4熱度

    1回答

    考慮我正在寫一個靜態庫。讓它有一個類Foo // mylib.h #include <dependency_header_from_other_static_library.h> class Foo { // ... private: type_from_dependent_library x; } 正如你可以看到這個庫(我們叫它mylib)依賴於另一個庫。它編譯

    2熱度

    1回答

    是QImage基於QSharedData?做Qimage關注pimpl或copy on write? 例如會複製(通過複製con或分配)Qimage使像素的深層副本?

    0熱度

    1回答

    我需要從非託管應用程序使用C#類。說我有下面的C#類: public class Managed { public void Subcribe(int handler) { .... } } 然後,我創建了下面的C++/CLI類: /// Header class Mixed { public: void Subscribe(int

    10熱度

    4回答

    是它在某種程度上可能隱藏實施完成以下任務: x.hpp - 這個文件是由許多其他類 class x_impl; //forward declare class x { public: //methods... private: x_impl* impl_; }; X包括的.cpp - 實施 #include <conrete_x> typede

    2熱度

    3回答

    例如 // Implementation. struct PrivatePoint { void SomePrivateMethod(); double x; double y; } struct Point : private PrivatePoint { double DistanceTo(const Point& other) const;

    15熱度

    3回答

    我來自C#背景,最近開始學習C++。我遇到的其中一件事是pimpl成語。我爲一些大公司完成了C#開發,但從未遇到它。 也許這是錯誤的,但我的理解是,它在C++中是必要的,因爲使用頭文件並且沒有部分類選項。 但是在C#中我們總是會使用類庫來構建應用程序。如果庫代碼中的某些內容發生更改,我們將重新編譯爲一個dll,並在應用程序項目中引用新的dll。 我不明白爲什麼用C++無法完成同樣的事情。 Pimp

    11熱度

    1回答

    我在一些代碼中發現了這個構造。 讓私有靜態類實現A有什麼好處嗎?這讓我想起了C++中的Pimpl成語。在Java中使用Pimpl idiom有什麼好處嗎? public abstract class A { public void doStuff(); public static A getNewInstance() { return new AImpl();