2013-01-23 51 views
2

我有這個奇怪的錯誤:xrefwrap錯誤:與Visual Studio 2012編譯我的項目時,「無效」函數返回值

error C2562: 'std::_Callable_obj<_Ty>::_ApplyX' : 'void' function returning a value C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xrefwrap

xrefwrap跳躍,誤差來源於此行:

_VARIADIC_EXPAND_0X(_APPLYX_CALLOBJ, , , ,)

我的代碼編譯罰款Linux上的GCC ..再加上編譯器給了我是什麼原因造成這個錯誤的信息。

這個錯誤的原因是什麼?我懷疑這一段代碼可能是源,但僅僅是因爲我使用std::ref有:

_listener.addSocket(clientSock, std::bind(&Client::handleReceive, &client, 
              _1, std::ref(*this)), 
        std::bind(&Lounge::handleClientDisconnect, this, 
           std::cref(client))); 

這裏是的成員函數我綁定了兩個簽名:

bool Client::handleReceive(std::shared_ptr<TBSystem::network::sockets::ITcpSocket>& socket, 
         Lounge& lounge); 

void Lounge::handleClientDisconnect(const Client& c); 

我做回一個值在Client::handleReceive

這是兩個std::function原型叫addSocket當我使用:

typedef std::function<bool (std::shared_ptr<sockets::ITcpSocket>&)> readCallback; 
typedef std::function<void()> disconnectCallback; 
+0

錯誤說'void'函數返回一個值。這意味着你可能需要給我們那些成員函數的簽名,至少。 – mfontanini

+0

我編輯了我的答案 – Zoneur

回答

0

嘛,原來在我的文件之一,我增加了一個監聽器與錯誤的原型(std::plus)...

_listener.addSocket(serverSocket, 
        std::bind(&Lounge::acceptClient, this, _1), 
        std::bind(std::plus<int>(), 0, 0); 
相關問題