代码之家  ›  专栏  ›  技术社区  ›  Peter Ajtai

在C++中,如何创建类实例W调用结构体或无结构调用?

  •  1
  • Peter Ajtai  · 技术社区  · 14 年前

    我正在创建一个类。

    此类将用户首选项存储在结构中。

    在创建类的实例时,我希望客户机可以选择创建一个没有传入首选项的实例或传入preferences结构的实例。

    无论哪种方式,一旦类接收到首选项,它就会制作一个供自己使用的副本。

    下面是指针的样子

    struct preferences {};
    class Useful 
    {
    public:
        Useful(preferences const * = NULL);
    ...
    }
    
    ...
    
    int main() 
    {
       preferences * testPrefs;
       ...
       Useful testClass(testPrefs);
       // or if no prefs: Useful testClass;
       ...
    }
    

    class Useful 
    {
    public:
        Useful(preferences & = ???????);
    
    5 回复  |  直到 14 年前
        1
  •  4
  •   Kate Gregory duffymo    14 年前

    指出指针相对于引用的优势,以及指针在多大程度上适合您的情况,然后宣布您不想使用它们。

        2
  •  7
  •   Pavel Minaev    14 年前
    Useful(const preferences& p = preferences(...));
    
        3
  •  3
  •   Mark Ransom    14 年前

    创建的静态实例 preferences

        4
  •  2
  •   Tyler McHenry    14 年前

    您可以简单地重载构造函数:

    struct preferences {};
    class Useful 
    {
    public:
        Useful(preferences&);
        Useful(); // In here, do whatever you would have done 
                  // if preferences were NULL in the pointer example
    }
    

        5
  •  1
  •   Gustavo V    14 年前

    您必须注意谁将是“preferences”指针的所有者,如果您转移了所有权,类必须在析构函数中删除它,否则,调用方必须销毁它。

    正如kategregory所说,您必须定义两个构造函数,在第二个构造函数中,您必须将首选项复制到您自己的实例中,至少该首选项只有一个静态集。

    有了一个独特的静态“首选项”,代码的其他部分就会修改它并改变代码的工作方式。