Re: [sigc] where is error? reference binding is impossible?



To bind a reference, you must use sigc::ref() around the reference in the sigc::bind() statement. Works perfectly. We use it all the time.

--
hpreg

Paul Pogonyshev wrote:
Apparently f1() _is_ called, but with a reference pointing to a wrong
place in memory...


#include <iostream>

#include <sigc++/sigc++.h>


namespace
{

  void
  f1 (int& x)
  {
    x = 1;
  }


  void
  f2 (int* x)
  {
    *x = 1;
  }

}


int
main ()
{
  int  x1 = 0;

  std::cout << "x1 = " << x1 << '\n';

  sigc::slot <void>  _f1 = sigc::bind (&f1, x1);
  _f1 ();

  std::cout << "x1 = " << x1 << '\n';

  int  x2 = 0;

  std::cout << "x2 = " << x2 << '\n';

  sigc::slot <void>  _f2 = sigc::bind (&f2, &x2);
  _f2 ();

  std::cout << "x2 = " << x2 << '\n';

  return 0;
}
_______________________________________________
libsigc-list mailing list
libsigc-list gnome org
http://mail.gnome.org/mailman/listinfo/libsigc-list



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]