在非模板库类中拥有静态成员而不将定义成员的负担放在类用户身上的最佳方法是什么?
假设我想提供这个类:
class i_want_a_static_member
{
static expensive_resource static_resource_;
public:
void foo()
{
static_resource_.bar();
}
};
然后该类的用户一定不要忘记在某处定义静态成员(正如已经多次回答的 那样):
// this must be done somewhere in a translation unit
expensive_resource i_want_a_static_member::static_resource_;
我在下面有一个答案,但它有一些缺点。有更好和/或更优雅的解决方案吗?