gpt4 book ai didi

c++ - 编译器添加引用运算符

转载 作者:行者123 更新时间:2023-11-28 00:31:36 25 4
gpt4 key购买 nike

我尝试从另一个类调用一个类函数,但我得到了一些非常奇怪的东西

所有参数都被视为引用,我不明白为什么编译器将其视为特例

class AbstractModulation 
{
public:

virtual bool isValidMatch(
FOLTerm* toMatch,
std::set<FOLVariable>* toMatchVariables,
FOLTerm* possibleMatch,
unordered_map<FOLVariable, FOLTerm*>* substitution)=0;
...

这一行:

abstractModulation->isValidMatch(toMatch, toMatchVariables,(FOLTerm*) variable,substitution)

导致此错误(请参阅添加到每个参数的 & 字符..wtf?):

AbstractModulation.cpp:105:104: error: no matching function for call to ‘AbstractModulation::isValidMatch(FOLTerm*&, std::vector<FOLVariable>*&, FOLTerm*, std::unordered_map<FOLVariable, FOLTerm*>*&)’

候选人:

AbstractModulation.h:44:7: note: bool AbstractModulation::isValidMatch(FOLTerm*, std::set<FOLVariable>*, FOLTerm*, std::unordered_map<FOLVariable, FOLTerm*>*)

这里是调用类的对象指针

class IdentifyCandidateMatchingTerm : public FOLVisitor 
{
private:
FOLTerm* toMatch;
vector<FOLVariable>* toMatchVariables;
FOLTerm* matchingTerm;
unordered_map<FOLVariable, FOLTerm*>* substitution;

请帮帮我,这真的很奇怪......

最佳答案

您已经使用 std::set<FOLVariable>* 定义了您的函数变量,但您尝试使用 std::vector<FOLVariable>* 调用它.

error: no matching function for call to 
‘AbstractModulation::isValidMatch(FOLTerm*&, std::vector<FOLVariable>*&,
^^^^^^^^^^^

但是定义是

virtual bool isValidMatch( FOLTerm* toMatch, std::set<FOLVariable>*
^^^^^^^^

这清楚地解释了发生了什么。仔细检查调用此方法的方式和位置。

关于c++ - 编译器添加引用运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22714322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com