如下图所示,我的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

09-25 22:55