gpt4 book ai didi

c++ - 将数组传递给对象方法

转载 作者:行者123 更新时间:2023-11-30 00:39:36 25 4
gpt4 key购买 nike

我遇到了一个我似乎无法理解的基本数组问题。

我有一个“StaticDisplayLayer”类,构造函数有两个参数——一个整数和一个指向 3 个无符号短整型数组的指针:

//constructor definition:
StaticDisplayLayer(int type, unsigned short *displayColor[3]);

//constructor code:
StaticDisplayLayer::StaticDisplayLayer(int type, unsigned short *dColor[3]) : DisplayLayer(type)
{
displayColor = dColor;
}

我正在尝试使用以下方法创建该类的实例:

unsigned short layerColor[3] = {(unsigned short)255,(unsigned short)255,(unsigned short)255};
StaticDisplayLayer myLayer(1, &layerColor);

我的理解是 &layerColor 是指向 layerColor 数组的指针,但编译器给我以下错误:

no matching function for call to `StaticDisplayLayer::StaticDisplayLayer(int, short unsigned int (*)[3])'
Candidates are:
StaticDisplayLayer::StaticDisplayLayer(const StaticDisplayLayer&)
StaticDisplayLayer::StaticDisplayLayer(GLenum, short unsigned int**)

我知道第二个候选者是我正在尝试使用的那个,但显然我不理解指向数组的指针的概念。如果有人可以阐明如何调用该构造函数和/或解释这一点的任何资源,我将不胜感激 - 到目前为止,我的在线搜索结果并不多。

最佳答案

unsigned short *dColor[3] 不是指向数组的指针,它是指向指针数组的指针。 [3] 被忽略并替换为另一个指针,因为它是一个函数参数。换句话说,它衰减。要创建指向数组的指针,请使用 unsigned short (*dColor)[3],这是一个指向大小为 3 的数组的指针,指向 unsigned short

C++ 中一个更好的想法是使用对数组的引用:

unsigned short (&dColor)[3]

只需传递 layerColor

关于c++ - 将数组传递给对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8509127/

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