我有一个用数字参数化的类,但实际上只有一些值是有效参数。为了对用户隐藏实现并防止无效实例化,我这样做了:
// foo.hpp
class IClass
{
virtual void doStuff() = 0;
};
IClass& getHiddenClass(const bool& randomCondition);
// foo.cpp
template <unsigned x>
class HiddenClass : public IClass
{
public:
void doStuff()
{
/* some code using x */
}
};
IClass& getHiddenClass(const bool& randomCondition)
{
static HiddenClass<42> ifRandomCondition;
static HiddenClass<9000> ifNotRandomCondition;
if (randomCondition)
return ifRandomCondition;
else
return ifNotRandomCondition;
}
可以吗,有更好的解决方法吗?这个例子是简化和抽象的,但我也不需要存储大量的有效实例。