Я пытаюсь собрать что-то вроде этого:Проблемы с СТЛ как статический член летучего
#include <list>
class thread
{
public:
static volatile std::list<thread *> threadList; //This is also protected by a mutex
};
volatile std::list<thread *> thread::threadList;
void main()
{
thread A;
thread::threadList.push_back(&A);
thread::threadList.remove(&A);
}
я получаю эти ошибки при попытке компиляции:
test.cpp(14): error C2663: 'std::list::push_back' : 2 overloads have no legal conversion for 'this' pointer
with
[
_Ty=thread *
]
test.cpp(15): error C2662: 'std::list::remove' : cannot convert 'this' pointer from 'volatile std::list' to 'std::list &'
with
[
_Ty=thread *
]
Conversion loses qualifiers
Что я делаю неправильно?
EDIT: исправлены некоторые ошибки форматирования с < и>
EDIT2: цепочек защищен взаимной блокировкой, я просто не поставил его здесь для простоты
Почему вы используете нестабильную? –
Я держу пари, что ему нужен список всех C++ 0x или boost 'thread', который у него есть, и он хочет, чтобы контейнер держал их в синхронизации. – KitsuneYMG