如果不是,cppcheck 越界
cppcheck out of bounds when it's not
当使用静态常量作为大小设置 class 定义中 std::array 的大小时,cppcheck 不知道数组有多大。所以当我不在的时候它认为我越界了
做一个#define 似乎解决了问题,所以这是一个学术问题。
class A
{
A() : myArr()
{
myArr[0]=100;
}
static const int SOMEVAL = 4;
std::array<double, SOMEVAL+1> myArr;
int getVal() { return myArr[1]; };
}
int main(void)
{
A myA;
myA.getVal();
}
有什么想法吗?
这是 cppcheck 中的一个缺陷:
https://trac.cppcheck.net/ticket/9202
已在 1.89 版本中修复:
https://trac.cppcheck.net/changeset/121093658d788126d5f94792c4ea00447fdbb979/
当使用静态常量作为大小设置 class 定义中 std::array 的大小时,cppcheck 不知道数组有多大。所以当我不在的时候它认为我越界了
做一个#define 似乎解决了问题,所以这是一个学术问题。
class A
{
A() : myArr()
{
myArr[0]=100;
}
static const int SOMEVAL = 4;
std::array<double, SOMEVAL+1> myArr;
int getVal() { return myArr[1]; };
}
int main(void)
{
A myA;
myA.getVal();
}
有什么想法吗?
这是 cppcheck 中的一个缺陷:
https://trac.cppcheck.net/ticket/9202
已在 1.89 版本中修复:
https://trac.cppcheck.net/changeset/121093658d788126d5f94792c4ea00447fdbb979/