如下图所示,我的 C++ 代码中有两个库,它们使用不同的索引语法,一个以 0 开头,另一个以 1 开头。C++ 代码非常复杂,这种差异对我来说很麻烦。我想知道以前是否有人遇到过这个麻烦,以及是否有这个技巧。我不知道,例如有没有一个技巧可以使它们具有相同的索引语法!!?


我用这样的东西解决了这个问题:
#define KFULL(row,col) kFull(row+1,col+1)
AG_Matrix kFull(4,4,5.0);
std::cout<<kFull(1,1)<<'\n';//prints 5
std::cout<<kFull(0,0)<<'\n';//prints garbage value
std::cout<<KFULL(0,0)<<'\n';//prints 5
int i=int(0);int j=int(0);
std::cout<<KFULL(i,j)<<'\n';//prints 5
因此,每次我声明一个AG_Matrix类对象时,我也会为该对象定义一个宏来处理基于 0 和基于 1 的索引问题。这个解决方案是由下面一位简单有效的人提出的。