如何从其他类C ++访问单例

时间:2015-04-28 16:39:02

标签: c++ class singleton

我找不到C ++这个问题的答案(对于其他语言是的)虽然我已经搜索了几个小时。如何从另一个类访问Singleton?

声明:

#include "Store.h"
Store *store = Store::Instance();      // Singleton

int main()
{
  store->GetDepts();
  return 0;
}

我希望能够从我的客户代理类访问它:

#include "Store.h"
class Cust_Proxy
{
public:
  Cust_Proxy(string cust_name)
  {
    name_ = cust_name;
  }
  void AddItem(Item item)
  {
    store->AddItemToShoppingCart(item);    // or something, just for example
  }
private:
  string name_;
  ShopCart cart_;
};

我已经尝试将其作为参数传递但显然在单例“store”中没有公共构造函数:

void AddItem(Store *store) 
{ 
  store = Store::Instance();
  // Do Stuff; 
}

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:4)

而不是

store->AddItemToShoppingCart(item);

使用

Store::instance()->AddItemToShoppingCart(item);

您不需要将指针存储到main.cpp中的单例或使用单例的任何其他函数。无论何时需要,都可以通过调用Store::instance()来访问单身人士。

main中,您可以使用:

int main()
{
  Store::instance()->GetDepts();
  return 0;
}

并删除该行

Store *store = Store::Instance();      // Singleton