1

我發現這個使用升壓信號的C++代碼,我試圖理解它。我想不出SelArity仿函數會返回什麼。據我所知m_signal是一種類型,可以聲明信號,將能夠連接到Signature簽名的功能。如何將類型作爲參數?(請參見return BaseType::m_signal(arg);ResultType代表的類型是什麼?並且我將如何能夠使用由函子SelArity返回的對象?升壓信號 - 類型作爲參數傳遞

回答

1

不,m_signal不是一個類型,它是SignalType的一個實例,它是boost::signal<Signature>

SelArity仿函數實際上調用帶有1個參數的m_signal並返回它的返回值。

(所有這些包裝都是我不知道的。)

+0

'arg'? 'arg'也是一個實例嗎?我也讀過boost文檔,如果'SignalType'是正確的(如果Signature是例如'void(float)'),則調用信號對象將不需要任何參數,例如
'boost :: signal sig;'
'sig.connect(&print);'
'sig(5);'
那麼爲什麼我需要返回'SignalType'對象(也就是' m_signal')與一個參數?在這個例子中'm_signal'不是'sig'嗎?那麼爲什麼要用參數調用m_signal呢? –

+1

@John Smith 1)是的,'arg'是參數(類型爲'BaseType :: SignatureTraits :: arg1_type')。 2)如果信號的簽名是'void(float)',調用者必須用一個參數調用它:'sig(5.0)'。 3)仿函數不返回信號對象,它*調用它並返回其返回值(參見文檔中的「組合器」)。 4)最後一點,但並非最不重要:我強烈建議您閱讀一本關於C++基礎知識的書!瞭解更多高級主題至關重要。 –