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();