【发布时间】:2012-01-20 12:02:36
【问题描述】:
我遇到了一个我似乎无法理解的基本数组问题。
我有一个类“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;
}
我正在尝试使用以下内容创建该类的实例:
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**)
我知道第二个候选者是我正在尝试使用的候选者,但显然我不理解指向数组的指针的概念。如果有人可以阐明如何调用该构造函数和/或任何解释这一点的资源,我将不胜感激 - 到目前为止,我的在线搜索并没有真正出现。
【问题讨论】:
-
您是否考虑过为此使用
std::vector?你可以用它绕过所有那些复杂的语法。 -
是的,我正要使用矢量重写它,但不想在不了解我做错了什么的情况下就放手。
标签: c++ arrays parameter-passing