我已經定義的方法具有可選/默認最後一個參數稱爲noAutoResolve
如下:C++可選/默認參數
typedef std::shared_ptr<IMessage> TMessagePtr;
class NetworkService : public IConnectionManagerDelegate, public net::IStreamDelegate
{
public:
void send_message(std::string identity, msg::TMessagePtr msg, QObject* window, std::function<void(int, std::shared_ptr<msg::IMessage> msg)> fn, bool noAutoResolve = false);
}
後來:
void NetworkService::send_message(std::string endpoint, msg::TMessagePtr msg, QObject* window, std::function<void(int res, std::shared_ptr<msg::IMessage> msg)> fn, bool noAutoResolve)
{
}
接頭是現在不滿解析的外部在我故意省略最後一個參數的以下行中:
service_->send_message(endpoint_, msg, this, [this](int result, msg::TMessagePtr msg){
// .....
});
在C++中不可能嗎?
錯誤LNK1120 1無法解析的外部QTServer QTServer.exe 1個
錯誤LNK2019解析外部符號「公共:無效__thiscall網絡服務:: send_message(類的std :: basic_string的,類的std ::分配器>類的std :: shared_ptr,class QObject *,class std :: function)>)「(?send_message @ NetworkService @@ QAEXV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ V?$ shared_ptr @ UIMessage @ msg @@@ 3 @ PAVQObject @@ V?$ function @ $$ A6AXHV?$ shared_ptr @ UIMessage @ msg @@@ std @@@ Z @ 3 @@ Z)在函數「public :void __thiscall QTWindow :: ExecuteCommand(void)「(?ExecuteCommand @ QTWindow @@ QAEXXZ)QTServer QTWindow.obj 1
定義「不高興」。它是否抱怨有錯誤,如果有,錯誤是什麼? – Harald
如果你確定*鏈接器*而不是*編譯器*是不快樂的,那麼你可能忘了鏈接函數的定義(.cpp)。但是請不要猶豫,發佈實際的錯誤信息:) – rustyx
你是說當你不忽略最後一個參數時鏈接器是開心的嗎? – stijn