c ++使用const变量定义数组大小
c++ defining array size with a const variable
int place = determinePlace(input);
const int arraySize = (place + 1);
int decimal[arraySize] = {};
嗨!
我尝试使用 const int 变量来定义 decimal[] 的数组大小。
但是,错误 C2057 和错误 C2466 不断出现。
有什么建议吗?
即使您将 arraySize
声明为 const
,它仍然不是编译时常量,因为它必须计算 运行-time.
改用std::vector
:
std::vector<int> decimal(arraySize);
数组大小应为 int
、unsigned
、unsigned int
或 size_t
而不是小数类型 double
使用std::vector
使用
#include <vector> // include the header
定义一个向量
std::vector<int> vec = {1, 2, 3, 4, 5};
这定义了值为 1、2、3、4、5 的向量 int
添加一些值
vec.push_back(12);
将 12 添加到 vec 向量
约阿希姆是对的,
您正在尝试设置:
const int arraySize = (determinePlace(input) + 1);
这是行不通的,因为您正在尝试获取用户输入或类似的东西,只有当您 运行 程序时才可以访问,而不是编译时。
我会尝试这样的事情:
#include <vector>
using std::vector;
vector<int> decimal;
decimal.resize(determinePlace(input) +1);
decimal = {};
int place = determinePlace(input);
const int arraySize = (place + 1);
int decimal[arraySize] = {};
嗨!
我尝试使用 const int 变量来定义 decimal[] 的数组大小。 但是,错误 C2057 和错误 C2466 不断出现。
有什么建议吗?
即使您将 arraySize
声明为 const
,它仍然不是编译时常量,因为它必须计算 运行-time.
改用std::vector
:
std::vector<int> decimal(arraySize);
数组大小应为 int
、unsigned
、unsigned int
或 size_t
而不是小数类型 double
使用std::vector
使用
#include <vector> // include the header
定义一个向量
std::vector<int> vec = {1, 2, 3, 4, 5};
这定义了值为 1、2、3、4、5 的向量 int
添加一些值
vec.push_back(12);
将 12 添加到 vec 向量
约阿希姆是对的, 您正在尝试设置:
const int arraySize = (determinePlace(input) + 1);
这是行不通的,因为您正在尝试获取用户输入或类似的东西,只有当您 运行 程序时才可以访问,而不是编译时。
我会尝试这样的事情:
#include <vector>
using std::vector;
vector<int> decimal;
decimal.resize(determinePlace(input) +1);
decimal = {};