pimpl-idiom

    4热度

    6回答

    我写一个C++头在我定义了一个 class A { // ... }; ,我想从外面的世界隐藏的(因为它可能会改变,甚至在此标题的未来版本中将被删除)。 还有一个B类在具有类A​​的一个对象作为成员相同的标题: class B { public: // ... private: A a_; }; 什么是从外界隐藏类A的一个适当的方式? 如果我把A的定

    0热度

    2回答

    在我的项目中,我使用了一个不断变化的第三方库。我有一个包装类(桥梁模式+ Pimpl模式)这个库。因此,除了包装实现外,我的任何源都不会看到该库。 这个库有一个Options结构,例如 struct Options { double distance; double weight; int num_rabbits; // etc }; 我想要这个结构在

    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;

    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

    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