如下图所示,我的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的索引问题。下面的一个简单的人提出了这个解决方案。 最佳答案
坏hack
#define KFULL(row, column) KFull(row + 1, column + 1)
KFULL(0, 0) = 4.0