2014-04-28 40 views
1

我明顯在做一些非常愚蠢的事情。出於某種原因,我無法通過Qt發出自定義信號。我得到的錯誤是:編譯時的信號/插槽錯誤

.\PBSPPTimeDelayServer.cpp(234) : error C3861: 'sig_tickExpicit': identifier not found 

我已經清理並重建項目以及檢查MOC文件的適當信號;它在那裏。

在此先感謝,我確定這只是一個小類型,但我不知道。

PBSPPTimeDelayServer.h

// Libraries 
#include <QObject> 
#include "PBSPipelineProcessorInOut.h" 
#include "POMRegistryConfiguredObject.h" 

// Interfaces 
#include "IPOMPipelineProcessor2InOut.h" 
#include "IPOMPipelineProcessor2In.h" 

class CPBSPPTimeDelayServer : public QObject, 
          public CPBSPipelineProcessorInOut, 
          public IPOMPipelineProcessor2InOut, 
          public CPOMRegistryConfiguredObject 

{

Q_OBJECT

市民:

//////////////////////////////////////////////////////////////////// 
///\name Construction/Destruction 
//@{ 
///Default Constructor 
CPBSPPTimeDelayServer(); 
///Destructor 
~CPBSPPTimeDelayServer(); 
//@} 
//////////////////////////////////////////////////////////////////// 

...

signals: 
void sig_tickExplicit(const quint64 nNT); 

PBSPPTimeDelayServer.cpp

HRESULT CPBSPPTimeDelayServer::getSurfaces(IPBSPinOut* pPin, CPBSSurfaceArgs& args) 
{ 
    // Pump components 
    if(!m_pPrivateData->m_liDolphinPumpClients.isEmpty()) 
    { 
     quint64 nNT[2]; 
     args.getNTPump().getNTArray(nNT); 

    for (QList<IPBSDolphinPumpClient*>::const_iterator i = m_pPrivateData->m_liDolphinPumpClients.constBegin(); 
     i != m_pPrivateData->m_liDolphinPumpClients.constEnd(); ++i) 
    { 
     HRESULT hr = (*i)->pump(nNT); 
    } 

    emit sig_tickExpicit(nNT[0]); 
} 

// Get surface from upstream 
return getInputByIndex(0)->getSurfaces(args); 

}

+3

信號名稱是'sig_tickExplicit'而不是'sig_tickExpicit'。它包含'l' :) – Ashot

+0

基督,我怎麼能做出這樣一個愚蠢的錯誤?非常感謝你! – jhammond

回答

1

\ PBSPPTimeDelayServer.cpp(234):錯誤C3861: 'sig_tickExpicit':未找到

標識符

void sig_tickExplicit(const quint64 nNT);

基本上,嘗試搜索其中一個,你不會找到其他。這通常意味着,你犯了一個錯字。我認爲你要寫的是這樣的(注意丟失的字符'l'):

emit sig_tickExplicit(nNT[0]); 
       ^