SORU
20 ŞUBAT 2010, CUMARTESİ


Nasıl üye işlevi ile bağlama boost kullanmak için

Aşağıdaki kodu çökmesine cl.exe (MS VS2005) neden olur.
Bağlama aramalar sınıfım için bir yöntem için bir işlevi oluşturmak için destek kullanmaya çalışıyorum:

#include "stdafx.h"
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <functional>

class myclass {
public:
    void fun1()       { printf("fun1()\n");      }
    void fun2(int i)  { printf("fun2(%d)\n", i); }

    void testit() {
        boost::function<void ()>    f1( boost::bind( &myclass::fun1, this ) );
        boost::function<void (int)> f2( boost::bind( &myclass::fun2, this ) ); //fails

        f1();
        f2(111);
    }
};

int main(int argc, char* argv[]) {
    myclass mc;
    mc.testit();
    return 0;
}

Neyi yanlış yapıyorum?

CEVAP
20 ŞUBAT 2010, CUMARTESİ


Aşağıdaki kullanın:

boost::function<void (int)> f2( boost::bind( &myclass::fun2, this, _1 ) );

Bu ileten ilk parametre işleve fonksiyonu için yer tutucular kullanarak nesne söylemelisinBoost.Bağlamanasıl parametreleri işlemek için. Senin ifade ile bir üye işlev argüman alacak şekilde yorumlamak için denemek istiyorsunuz.
Ortak kullanım alışkanlıkları, örneğin here here bkz.

VC8s cl.exe düzenli olarak çöküyor unutmayınBoost.Bağlamaşüphe kullanımda eğer kötüye - bir-örnek test gcc ile ve muhtemelen şablon parametreleri gibi iyi ipuçları elde edeceksinizBağlama-iç çıktı okursanız örneği alındı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010
  • Dylan Dubay

    Dylan Dubay

    10 Temmuz 2013
  • KoreanFrogMania님의 채널

    KoreanFrogMa

    18 Aralık 2011