Créer un thread à l'intérieur de la classe avec la fonction de la même classe

Je veux être en mesure de définir une classe avec certains membres de données et une fonction qui a accès à ces données, les membres, qui doivent être privé.

Je veux une fonction publique, ce qui crée des threads, qui opèrent sur les données membres de la classe. Je vais avoir quelques difficultés à obtenir mon code à compiler.

Ne vous inquiétez pas à propos de mutex ou de la protection des données, ce n'est pas un problème, puisque c'est juste un exemple de code pour les tests.

class foo {
    public:
    void make_foo_func_threads();

    private:
    void foo_func();

    char private_data;
    std::vector<std::thread> some_threads;
}

void foo::foo_func() {
    while(1) {
        private_data = 'A';
    }
}

void foo::make_foo_func_thread() {
    for(...) some_threads.push_back(std::thread(foo_func));
    for(...) some_threads.join();
}

Le compilateur me donne l'erreur:

'pas de correspondance appel à std::thread::thread()'

Apparemment il n'y a rien connu de la conversion de l'argument 1 de <unresolved overloaded function type> à void (foo::*&&)'.

Euh, ouais, je n'ai aucune idée de ce que cela signifie en dehors de l'compilateur est d'avoir de la difficulté à comprendre comment résoudre foo_func - je pense.

Comment puis-je aider le compilateur à comprendre ce que je suis en train de faire, donc ça ne me dérange pas avec plus d'erreurs. Nul doute que le code que j'ai écrit n'est pas légal, et si c'est le cas, quelqu'un pourrait-il expliquer pourquoi c'est le cas pour moi. Merci!

source d'informationauteur user3728501