基本函数重载,指针指向给出错误的参数

时间:2014-04-22 16:43:55

标签: c++ function pointers struct overloading

这可能是函数重载的基本问题,但我收到错误,因此在此处发布。以下是示例代码:

// 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函数;它给出了错误。

由于

2 个答案:

答案 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()
{


}