我是c++
的新手,我知道有很多类似的问题,但不幸的是没有帮助我解决这个问题(我认为这是一个概念上的误解)
所以我有这个构造函数
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
).
关于c++ - 在 C++ 中发生没有匹配函数调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37352003/