我找不到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;
}
非常感谢任何帮助。谢谢。
答案 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