vendredi 1 novembre 2019

How do I run a member function on a thread?

When I compile the code below I get the following error. help me...!

Errors:

Error C2276 '&': illegal operation on bound member function expression
Error C3867 'CCore::Run': non - standard syntax; use '&' to create a pointer to member

I'm not sure if the program gives me an error.
I want to run the "Run" function of the Core class.
Core.cpp file contains only the functions created by the compiler.

I'm learning English so I'm not good yet. So please understand that the whole code.

// main.cpp
#include "Core.h"
#include <thread>

int main()
{
    // The conditions below have been success
    if (CCore::GetInstance().Init())
    {
        // The code below fails to compile.
        // Error C3867 'CCore::Run': non - standard syntax; use '&' to create a pointer to member
        thread main_thread(CCore::GetInstance().Run);

        // Error C2276 '&': illegal operation on bound member function expression
        thread main_thread(&CCore::GetInstance().Run);

        main_thread.join();
    }
    return 0;
}
// Core.h
#pragma once
#include "Singleton.h"
#include <iostream>
using namespace std;

class CCore : public Singleton<CCore>
{
public:
    CCore();
    ~CCore();
    bool Init();
    void Run();
};
// Singleton.h
#pragma once

template<typename T>
class Singleton
{
protected:
    Singleton()=default;
    ~Singleton()=default;
public:
    static T& GetInstance()
    {
        static T instance;
        return instance;
    }
    Singleton(const Singleton&) = delete;
    Singleton& operator=(const Singleton) = delete;
};

Aucun commentaire:

Enregistrer un commentaire