You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++:如何为指向含3个double的数组的指针的指针编写Getter/Setter

解决指向含3个double数组的指针的指针的Getter/Setter问题

你的问题出在返回类型不匹配上:const double *** 和成员变量 const double (**colorData)[3] 是完全不同的类型。前者是三级指针(指向double*的指针的指针),后者是指向“指向3个const double数组的指针”的指针,类型无法直接兼容。

正确的Getter写法

方式1:直接使用原生类型声明

// 直接写出完整返回类型
const double (**MyColorClass::getColorData())[3]
{
    return colorData;
}

方式2:用尾置返回类型(C++11及以后更易读)

// 尾置返回类型,可读性更好
auto MyColorClass::getColorData() -> const double (**)[3]
{
    return colorData;
}

方式3:用类型别名简化(推荐,代码更清晰)

先在类外或类内定义类型别名:

// 定义指向3个const double数组的指针类型
using ColorArrayPtr = const double (*)[3];
// 定义指向上述指针的指针类型
using ColorArrayPtrPtr = ColorArrayPtr*;

然后修改类的成员声明:

class MyColorClass {
    // ...
private:
    ColorArrayPtrPtr colorData;
    // ...
};

对应的Getter就可以写成:

ColorArrayPtrPtr MyColorClass::getColorData()
{
    return colorData;
}

对应的Setter写法

同样按照类型匹配的原则:

原生类型版本

void MyColorClass::setColorData(const double (**newColorData)[3])
{
    colorData = newColorData;
}

类型别名版本

void MyColorClass::setColorData(ColorArrayPtrPtr newColorData)
{
    colorData = newColorData;
}

补充说明

如果需要返回不可修改的指针(即外部不能通过返回值修改colorData本身),可以把Getter的返回类型改成const ColorArrayPtrPtr或者const double (** const)[3],根据你的需求调整。

内容的提问来源于stack exchange,提问作者fatecasino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:55:10