gpt4 book ai didi

c++ - 转换运算符重载以返回 2-dim 数组以访问外部库

转载 作者:行者123 更新时间:2023-11-30 05:14:32 24 4
gpt4 key购买 nike

class M33
{
public:
double m[3][3];

double (*GetM())[3] {
return m;
}
};

// call to JPL cspice f2c generated routine
// void mxm_c ( const double m1 [3][3],
// const double m2 [3][3],
// double mout[3][3] )

void test()
{
M33 m1;
M33 m2;
M33 mOut;
mxm_c( m1.m, m2.m, mOut.m ); // this works
mxm_c( m1.GetM(), m2.GetM(), mOut.GetM() ); // this works
}

使用 VS2013。问题:是否可以使用诸如...之类的转换运算符

operator double*[3] () // this does not compile
{
return m;
}

从而允许这种编码风格的快捷方式?

mxm_c( m1, m2, mOut ); // this does not work

最佳答案

是的,你可以做这样的运算符。当涉及复杂类型时,最好引入别名:

using Ptr = double (*)[3];

operator Ptr()
{
return GetM();
}

[Live example]

关于c++ - 转换运算符重载以返回 2-dim 数组以访问外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43411754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com