这可能是函数重载的基本问题,但我收到错误,因此在此处发布。以下是示例代码:
// Sample.cpp
struct A
{
struct B
{
}b;
struct C
{
}c;
};
set_data(B *b1)
{
}
set_data(C *c1)
{
}
set_data(A *a1)
{
set_data(a1->c); // this line give error
set_data(a1->b); // this line give error
}
我无法使用struct B和struct C调用set_data函数;它给出了错误。
由于
答案 0 :(得分:2)
您的代码存在以下几个问题:
1.在结构A中定义了结构B和C的事实导致它不能作为B pr C访问,你应该使用完全限定名A :: B和A :: C
2.第二个问题是你在传递实际对象时期望一个指针,你可以通过获取对象的地址来解决这个问题
void set_data(A::B *b1)
void set_data(A::C *c1)
void set_data(A *a1)
{
set_data(&(a1->c));
set_data(&(a1->b));
}
现在应该可以了。
答案 1 :(得分:1)
此代码中存在许多错误。您收到编译错误的行应该是:
set_data(&a1->c);
set_data(&a1->b);
整个代码应该是:
struct A
{
struct B
{
}b;
struct C
{
}c;
};
void set_data(A::B *b1)
{
}
void set_data(A::C *c1)
{
}
void set_data(A *a1)
{
set_data(&a1->c); // this line give error
set_data(&a1->b); // this line give error
}
void main()
{
}