所以。。我正在使用C++进行一个项目,我有多个结构,只有一个函数需要将其中一个结构作为参数。
我已经到处找了,只在特定的。。。
这是我的一个结构
struct {
int tag_id;
String serial;
} dataHeader;
在我经过的地方
loraSend(message, &dataHeader);
下面是将接收结构作为参数的函数void loraSend(String message, struct MsgStruct &msg_struct)
The problem is that this is just giving this error: "no matching function for call to 'loraSend(String&, <anonymous struct>*)' ".
你能向我解释一下我该怎么解决这个问题吗?
非常感谢
using MsgStruct = decltype(dataHeader);
void loraSend(String message, MsgStruct* msg_struct) {
// ...
}
// elsewhere:
loraSend(message, &dataHeader);
您正在将struct dataHeader
类型的参数传递给接受第二个struct MsgStruct
类型参数的函数。这就是您收到错误消息的原因
您的函数loraSend
可能被重载(即,用第二个参数类型struct MsgStruct
写入它的另一个副本(,或者,您的第二个变量可能是void
指针(可以指向任何东西(,loraSend
需要计算出它的参数类型。
struct MsgStruct {
int tag_id;
String serial;
} dataHeader;
而不是typedef
或using
声明。
结构
struct {
int tag_id;
String serial;
} dataHeader;
是一个未命名的([class.pre](结构:
一个类说明符,其类头省略了类头名称定义未命名的类。
匿名结构的一个例子是:
struct {
int a;
int b;
};
用-pedantic
编译上面的内容应该说明匿名结构不是iso c++,但是有些编译器有它的扩展