就像是:
template<bool HOLD_MANUFACTURER>
class Computer {
int memory;
int storage;
#if HOLD_MANUFACTURER
char *manufacturer;
#endif
};
Run Code Online (Sandbox Code Playgroud)
我需要这个来创建几乎相同的类的两个变体,当出于性能原因,一个变体是较轻的变体.我不想使用一个单独的类来包装较轻的一个.
如果是,是否可以使用任何类型(不仅仅是上面示例代码中的bool)?也许只是原始类型?枚举怎么样?
这段代码对我不起作用,但我希望我错过了一些小东西.
您可以在策略方法中创造性地使用空基础优化来实现您想要的几乎:
struct NO_MANUFACTURER {};
struct HOLD_MANUFACTURER { char *manufacturer; };
template <typename ManufacturerPolicy>
class Computer : public ManufacturerPolicy
{
int memory;
int storage;
}
Run Code Online (Sandbox Code Playgroud)
然后实例化为 Computer<HOLD_MANUFACTURER> computer_with_manufacturer;