将数组传递给对象方法

The*_*eOx 1 c++ arrays parameter-passing

我遇到了一个基本的阵列问题,我似乎无法理解.

我有一个类"StaticDisplayLayer",构造函数接受2个参数 - 一个int和一个指向3个无符号短整数的数组的指针:

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

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

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

unsigned short layerColor[3] = {(unsigned short)255,(unsigned short)255,(unsigned short)255};
StaticDisplayLayer myLayer(1, &layerColor);
Run Code Online (Sandbox Code Playgroud)

我的理解是&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**)
Run Code Online (Sandbox Code Playgroud)

我知道第二个候选人是我正在尝试使用的那个,但显然我不理解指向数组的指针的概念.如果有人能够阐明如何调用该构造函数和/或解释这一点的任何资源我会很感激 - 到目前为止,我的在线搜索并没有真正发现.

Xeo*_*Xeo 5

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

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

unsigned short (&dColor)[3]
Run Code Online (Sandbox Code Playgroud)

然后通过layerColor.