|
Boost Users : |
Subject: [Boost-users] Weird problem with boost::noncopyable and boost::mutex
From: Daniel V (dann.vd_at_[hidden])
Date: 2010-03-17 18:52:23
Hi,
*I was doing a program in C++ where I simulate a Java's ArrayList...*
*
*
template <class T>
class Duo
{
public:
Duo *next;
T element;
Duo(T el,Duo *sig)
{
element=el;
next=sig;
}
~Duo() {};
Duo* getNext() {return next;}
T getElement() {return element;}
void setNext(Duo *myNext) {next=myNext;}
void setElement(T el){element=el;}
};
template <class T>
class ArrayList
{
public:
Duo <T>*Ptr_First;
Duo <T>*Ptr_Last;
ArrayList(){Ptr_First = Ptr_Last = NULL;};
~ArrayList(){}
void insert(T el);
std::pair<T, int> get(int index);
};
template <class T>
void ArrayList<T>::insert(T elem) {
Duo<T> *ptr_walker = Ptr_First;
Duo<T> *ptr_cache;
if (Ptr_First == NULL && Ptr_Last == NULL) {
Duo<T> *Ptr_temp = new Duo<T>(elem, NULL);
Ptr_First = Ptr_temp;
Ptr_Last = Ptr_temp;
}
else {
while (ptr_walker->getNext() != NULL)
ptr_walker = ptr_walker->getNext();
ptr_cache = ptr_walker;
Duo<T> *Ptr_temp = new Duo<T>(elem, NULL);
Ptr_Last = Ptr_temp;
ptr_walker->setNext(Ptr_temp);
}
}
template <class T>
std::pair<T, int> ArrayList<T>::get(int index)
{
Duo<T> *ptr_walker;
std::pair <T, int> receiver;
receiver.first = ptr_walker->getElement();
receiver.second = 0;
bool found = false;
if ((Ptr_First == NULL) && (Ptr_Last == NULL))
return receiver;
else {
ptr_walker = Ptr_First;
for (int i = 0; i<index; i++) {
ptr_walker = ptr_walker->getNext();
}
receiver.first = ptr_walker->getElement();
receiver.second = 1;
return receiver;
}
}
*The thing is that I instanciated an ArrayList object and called the
"insert" method and I received an error from boost::mutex AND
boost::noncopyable!! and I am not using them at all!!*
*This is the code that generates the error:*
ArrayList<ObjectA> myArrayListA;
ObjectA myObjectA;
myArrayListA.insert(myObjectA);
*and the errors I got:*
mkdir -p build/Debug/GNU-MacOSX
rm -f build/Debug/GNU-MacOSX/main.o.d
g++ -pthreads -lboost_thread -c -g -fPIC -MMD -MP -MF
build/Debug/GNU-MacOSX/main.o.d -o build/Debug/GNU-MacOSX/main.o main.cpp
/usr/local/include/boost/noncopyable.hpp: In copy constructor
'boost::mutex::mutex(const boost::mutex&)':
In file included from main.cpp:23:
/usr/local/include/boost/noncopyable.hpp:27: error:
'boost::noncopyable_::noncopyable::noncopyable(const
boost::noncopyable_::noncopyable&)' is private
/usr/local/include/boost/thread/pthread/mutex.hpp:31: error: within this
context
ObjectA.h: In copy constructor 'ObjectA::ObjectA(const ObjectA&)':
ObjectA.h:18: note: synthesized method 'boost::mutex::mutex(const
boost::mutex&)' first required here
*Any Ideas why am I receiving this errors?*
THANKS!!
Dann
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net