【发布时间】:2015-07-31 17:41:43
【问题描述】:
"no matching function for call to [...] cdk::sequence_node*&"
这是什么魔法?我如何解决它?我必须投射吗?
函数需要 cdk::sequence_node * some_sequence_node 作为参数。
根据这个关于asterisk and ampersand的问题
二进制节点 b;
BinaryNode* ptr = &b;
BinaryNode* &t = ptr;
如果BinaryNode* &t = ptr;,为什么编译器会抱怨?
编辑(按要求):
pwn_parser.y: In function ‘int yyparse(std::shared_ptr<cdk::compiler>)’:
pwn_parser.y:70:135: error: no matching function for call to ‘pwn::func_decl_node::func_decl_node(int, bool, bool, basic_type*&, std::string*&, cdk::sequence_node*&)’
func_decl : type_specifier tIDENTIFIER '(' func_decl_args ')' context { $$ = new pwn::func_decl_node(LINE, false, false, $1, $2, $4); }
pwn_parser.y:70:135: note: candidates are:
In file included from ast/all.h:99:0,
from pwn_parser.y:5:
./ast/func_decl_node.h:29:12: note: pwn::func_decl_node::func_decl_node(int, bool, bool, basic_type*, cdk::identifier_node*, cdk::sequence_node*)
inline func_decl_node(int lineno, bool local, bool import,
【问题讨论】:
-
可能是签名的其他部分不匹配,但您没有显示真实代码,也没有显示整个错误消息,也没有编译器可能给出的候选列表,所以我们的手被束缚了。
-
&t = ptr没有多大意义。 '变量“t”的地址是存储在变量“ptr”中的值'. -
*已编辑 - 感谢您的回复:D 必须在明天之前完成项目。墨菲定律
-
糟糕,正确。但是,您传递的是
std::string*,而identifier_node*是预期的(编译器显示为候选的重载)。
标签: c++11 call asterisk yacc ampersand