Oder nochmal in C++11

Code:
#include <iostream>
#include <thread>




using namespace std;




typedef struct {
    pthread_t tid;
    char* name;


    float p;
    float i;
    float d;
} PID_t;




class TestClass
{
public:
    TestClass() {}
    ~TestClass() {}


    void Start(PID_t *p)
    {
        t = new thread(&this->MyTask, p);
    }


    void Stop()
    {
        t->join();
    }


private:
    static void MyTask(PID_t *p)
    {
        cout << "PID: " << p->tid << endl;
        cout << "Name: " << p->name << endl;


    }


    thread *t;


};




int main()
{
    cout << "Start" << endl;


    PID_t pp[3] = {    {0, (char*)"MyName1", 5, 6, 7},
                    {1, (char*)"MyName2", 5, 6, 7},
                    {2, (char*)"MyName3", 5, 6, 7}};


    TestClass tc1;
    TestClass tc2;
    TestClass tc3;


    tc1.Start(&pp[0]);
    tc2.Start(&pp[1]);
    tc3.Start(&pp[2]);


    //...


    tc1.Stop();
    tc2.Stop();
    tc3.Stop();




    return 0;
}