2016-11-30 11 views
-2

次のソースを正しく書き換えるにはどうすればよいですか?これはGLibを搭載したIRC-botの一部です。次のエラーでコンパイラがクラッシュ:次のコードはなぜコンパイルされませんか?

src/irc.cpp:20:9: error: cannot call member function ‘Glib::ListHandle<Glib::RefPtr<Gio::InetAddress> > Gio::Resolver::lookup_by_name(const Glib::ustring&, const Glib::RefPtr<Gio::Cancellable>&)’ without object 
    ), 

出典:

#include "includes.hpp" // Just including all the files 

Glib::RefPtr<Gio::Socket> ircSock; // Our socket 

void ircInit() { // Init-function 
    try { 
    ircSock = Gio::Socket::create(// Creating socket 
     Gio::SocketFamily::SOCKET_FAMILY_IPV4, 
     Gio::SocketType::SOCKET_TYPE_STREAM, 
     Gio::SocketProtocol::SOCKET_PROTOCOL_TCP 
    ); 

    ircSock->connect(// Problematic code 
     Gio::InetSocketAddress::create(
     Gio::Resolver::lookup_by_name(
      "irc.freenode.net", // For-example 
      Gio::Cancellable::create() 
     ), 
     6667 
    ), 
     Gio::Cancellable::create() 
    ); 
    } catch(const Glib::Error& e) { 
    std::cerr << "IRC: Error: " << e.what() << std::endl; // Error-reporting 
    } 
} 
+5

メンバー関数なので、静的関数のように呼び出すことはできません。 –

答えて

3

documentationによると、これはメンバ関数であるので、あなたのようにそれを呼び出そうとしている間、あなたは、それを呼び出すために構築されたオブジェクトを必要とします静的関数です。

正しい修正はGio::Resolverオブジェクトを作成し、作成したオブジェクトに対してこのメ​​ソッドを呼び出します。

+0

ええ、私はrnを試してみます。 – Ancient

+0

'src/irc.cpp:19:18:error: 'resolver'のメンバ 'lookup_by_name'のリクエストです。これは非クラス型の 'Gio :: Resolver()''です(申し訳ありません。現在のバージョン:[ここ](http://hastebin.com/sasezeroju.php) – Ancient

関連する問題