文脈に入れてみましょう。 Qt Creatorを使ってチャットボックスを作っています。私はC++には新しかったので、それは難しいことです。 std::thread
を使用してスレッドを作成したいと思います。ここで私が書いたコードは次のとおりです。クラスの中でスレッドを作るとエラーが出るC2664
class Window: public QWidget
{
Q_OBJECT
public:
Window();
public slots:
void Config();
private:
void ListenToClients(Server server);
//member...
};
window.h
window.cpp
Window::Window(): QWidget()
{
//not important code...
do
{
//nothing
}while(config.getLaunch() == false);
Server myServer(config.getPort(), config.getBroadcast());
std::thread serverThread(&Window::ListenToClients, this, myServer);
}
void Window::Config()
{
config.exec();
}
void Window::ListenToClients(Server server)
{
for(int i = 0; i < 100; i++)
{
server.ListenNewConnections();
}
}
だから私はこのエラーを取得する:erreur:C2664:'std::tuple<void (__cdecl Window::*)(Server),Window *,Server>::tuple(std::tuple<void (__cdecl Window::*)(Server),Window *,Server> &&)'ÿ: imossible to convert argument 1 of 'void (__cdecl Window::*)(Server)' in 'std::allocator_arg_t'
私は見当がつかないなぜ、そしてそれが何を意味するのか。私はちょっと調べましたが、誰もこのようなエラーがなかったようです。だから、私は皆さんを信じています。
'public slots'はQt拡張子です。' Config() '関数をスロットにしたい場合、opは省略できません。 – Mike
'Window :: Window():QWidget()'は有効ですが、引数なしで 'QWidget()'を呼び出す必要はありません(これは通常 'QWidget'のコンストラクタに引数を渡すときにのみ行われます)。 – Mike