【发布时间】:2013-11-07 20:33:59
【问题描述】:
我编写了一个 Array 类来创建 1d、2d 和 3d 数组,它适用于每个测试:2d 案例的数组类构造函数示例:
Array::Array( int xSize, int ySize )
{
xSize_ = xSize;
ySize_ = ySize;
zSize_ = 1;
vec.resize(xSize*ySize);
}
它工作正常,但是当我需要在其他构造函数中使用这个构造函数时,我得到“没有匹配的函数错误”, 我的部分代码:
class StaggeredGrid
{
public:
StaggeredGrid ( int xSize1, int ySize1, real dx, real dy ) : p_ (2,2) {}
protected:
Array p_;
完全错误:
No matching function for call to Array::Array()
Candidates are : Array::Array(int)
Array::Array(int, int)
Array::Array(int, int, int)
如果有人知道问题,我将不胜感激
【问题讨论】:
-
这应该在 C++ 中工作。错误出现在您没有向我们展示的源文件的一部分中。请复制完整的源文件 (sscce.org) 并在错误消息中包含行号。
-
您可能应该使 Array *p_ 而不是 Array p_ (使其成为指针),然后在 StaggeredGrid 构造函数中执行 new 或 unique_ptr 或类似的操作。
-
@RichardChambers 请不要推荐使用指针
标签: c++ arrays constructor