在 C++ 中没有针对调用错误的匹配函数
occur no matching function for call to error in c++
我是c++
的新手,我知道有很多类似的问题,但不幸的是没有帮助我解决这个问题(我认为这是一个概念上的误解)
所以我有这个constructor
Field::Field(const Position &posG, const Position &posC) {
//...
}
我正在创建一个Field
如下
// Create positions
Position posG, posC;
posG.x = 3;
posG.y = 3;
posC.x = 4;
posC.y = 4;
// Create pointers to positions
const Position *pPosC(&posC);
const Position *pPosG(&posG);
// Create field
Field field (pPosG, pPosC);
其中位置是
struct Position {
int x;
int y;
};
然后我得到这个异常:
main.cpp:27:30: error: no matching function for call to ‘Field::Field(const Position*&, const Position*&)’
Field Field (pPosG, pPosC);
In file included from main.cpp:2:0:
有什么帮助吗?问候
Field(const Position &posG, const Position &posC);
^^^^^ ^^^^^^
这些是参考资料。所以当你尝试传递指针时
Field field (pPosG, pPosC);
^^^^^ ^^^^
pointer pointer
它无法编译。
要么使构造函数接受引用指针(const Position *&posG)
,要么传递指针的值(*pPosG
),要么直接传递值(posG
)。
当您将构造函数定义为
Field(const Position &posG, const Posicion &posC);
您可以使用 Position
类型的对象作为它的参数,而不是指向 Position
的指针。
您可以使用:
Field field(posG, posC);
或
Field field(*pPosG, *pPosC);
构造函数需要引用,而不是指针。
作为旁注,不清楚为什么使用引用或指针。
你必须定义一个constructor
,然后使用const Position *pPosC(&posC);
表达式。
您必须像这样定义constructor-copy
:
struct Posicion {
public :
Position(const Position &pos) // constructor copy
{
// some code here
x = pos.x;
y = pos.y;
}
int x;
int y;
};
相关文章:
- 链接器错误:函数的多个定义
- 编译器错误:函数调用在常量表达式中必须有一个常量值
- 错误:函数声明符之后的预期函数体
- C 错误 - 函数不能超载
- 如何修复传递参数时调用错误函数的主函数?(C++)
- 错误:函数调用中有两个参数
- 错误:函数不是“类”的静态数据成员 - C++
- C ,G 编译错误函数
- CMake 解析错误函数缺少结尾")"。而是找到带有文本的未终止字符串")
- C++ 错误 函数 2 的多重定义
- 错误:函数调用中从int到int(*)[4]的转换无效
- C++14 自动扣除错误:函数返回一个数组
- 视觉C++错误:函数必须返回一个值
- 错误:函数声明中的两种或多种数据类型
- 错误:函数未在作用域中声明
- rtw_android.c错误:函数“strnicmp”的隐式声明[-Weror=隐式函数声明]
- 错误:函数中的return语句没有值,返回“void*”[-fpermission]
- 简单程序中的链接器错误:函数的多重定义
- 错误:函数参数太多
- 错误:函数__tmaincrtstartup中引用的未解析的外部符号_main