Ошибка при использовании подкласса класса с членом данных boost :: thread

Я создал следующий класс

#include <iostream>
#include <boost/thread.hpp>
#include <boost/date_time.hpp>

class Messaging
{
public:
Messaging(const std::string& newMessage, unsigned long long maxTimeToDeliver = 12): m_theMessage(newMessage), m_maxTimeToDeliver(maxTimeToDeliver), athread(){};
virtual ~Messaging(void);

protected:
std::string m_theMessage;
unsigned long long m_maxTimeToDeliver;
boost::thread athread;
};

и подкласс

#include "messaging.h"#include <iostream>

class SportMessaging :public Messaging
{
public:
SportMessaging(const std::string newMessage, unsigned long long maxTimeToDeliver = 1): Messaging(newMessage, maxTimeToDeliver) {};
virtual ~SportMessaging(void);
};

и в основном я пытаюсь создать объект каждого

#include "SportMessaging.h"#include <boost/thread.hpp>
#include <boost/date_time.hpp>
int main()
{
SportMessaging anotherSportMessagingObject = SportMessaging("another sports message",4);  //gives error C2248: 'boost::thread::thread' : cannot access private member declared in class 'boost::thread'

Messaging aMessObj = Messaging("sports message 3");  //works

return 0;
}

Почему я могу создать объект Messaging, но объект SportMessaging не работает?

Я оглянулся и подозреваю, что это может быть связано с boost :: thread, имеющим собственный конструктор копирования, подобный boost :: thread_group (stackoverflow сообщение об использовании boost :: thread_group в классе).

Тем не менее, кажется, что оба Messaging("sports message 3") а также SportMessaging("another sports message",4) будет вызывать их конструктор копирования, а затем каждый из конструкторов копирования нестатических членов (т. е. включая попытку вызвать конструктор копирования boost :: thread). Идея в последнем предложении противоречит тому факту, что «SportMessaging anotherSportMessagingObject = SportMessaging (« другое спортивное сообщение », 4); ‘ не работает и ‘Messaging aMessObj = Messaging («спортивное сообщение 3»); `работает.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]