我有以下内容
struct
:
struct pool_options
{
const uint32 initial_size;
const bool can_grow;
const bool min_by_percent;
const uint32 minimum_size;
const bool grow_by_percent;
const uint32 grow_size;
const bool keep_extra_space;
const bool max_by_percent;
const uint32 maximum_size;
const bool defrag_by_percent;
const uint32 fragment_size;
};
我将初始化构造函数初始值设定项列表中的常量,但问题是我需要进行额外的检查来验证输入值,但这会导致编译器发出信号
l-value specifies const object
错误构造函数的代码:
pool_options(uint32 is, bool cg, bool mip, uint32 mis, bool gp, uint32 gs, bool kes, bool map, uint32 mas, bool dp, uint32 fs)
: initial_size(is), can_grow(cg), min_by_percent(mip), minimum_size(mis), grow_by_percent(gp),
grow_size(gs), keep_extra_space(kes), max_by_percent(map), maximum_size(mas), defrag_by_percent(dp), fragment_size(fs)
{
if (can_grow)
{
if (min_by_percent && minimum_size > 100) minimum_size = 100;
if (grow_by_percent && grow_size > 100) grow_size = 100;
}
else
{
min_by_percent = false;
minimum_size = 0;
grow_by_percent = false;
grow_size = 0;
}
if (keep_extra_space)
{
max_by_percent = false;
maximum_size = 0;
}
else
{
if (max_by_percent && maximum_size > 100) maximum_size = 100;
}
if (defrag_by_percent)
{
if (fragment_size > 100) fragment_size = 100;
}
}
这个
结构
是针对我目前正在处理的内存管理器,变量必须是常量,所以一旦分配了它,其他类就永远不会更改它。
我该如何解决这个问题?