【发布时间】:2017-02-17 12:08:25
【问题描述】:
我的程序的输出是一个数组,这个数组的大小是基于用户输入的。 但是要设置数组的大小,我需要常量。
所以一种解决方案是让用户在编译/运行之前设置常量。
const int test1 = 10;
const int test2 = 20;
std::string TestArray[test1][test2];
然而,除了 Array 的 2 个常量之外,还有几个常量需要设置,因此理想情况下,用户只需设置 1 个变量,然后使用如下开关根据该变量设置常量:
const int number = 2;
int test1a;
int test2a;
switch (number)
{
case 1:
test1a = 10;
test2a = 10;
test3a = 123;
break;
case 2:
test1a = 20;
test2a = 20;
test3a = 456;
break;
}
const int test1 = test1a;
const int test2 = test2a;
std::string TestArray[test1][test2];
test2 = 50;
但是,这会导致 test1 和 test 2 在设置数组时出现“表达式必须具有常量值”的错误。但是尝试设置 test2 = 50 之后的行给出了错误“表达式必须是可修改的 Ivalue”
正在设置的数据是建筑信息。 因此,第 1 组将针对具有 x 层、y 人等的普通办公楼 第 2 组平均酒店 第三组平均住宅区 等等
【问题讨论】:
-
可以使用 ternar 运算符: const int test1 = ( (number==1) ? 10 : 20 );
-
我可以用“number==variable”代替“number==1”吗?然后我可以设置一个变量来设置多个常量。
-
如果变量是 const 应该没问题