I'm having an issue with declaring a mutex in a class, whenever I attempt instantiate the class the Error C2280 appears. My project is too create a simulation of the Dining Philosopher's Problem.
Declaration:
class Fork
{
public:
struct _position
{
float x;
float y;
};
Fork();
Fork(int num_phil_, int new_index_);
_position ReturnWorkPosition(){ _position return_position_; /*position_mutex_.lock();*/ return_position_ = work_position_;
/*position_mutex_.unlock();*/ return return_position_; };
float ReturnRotation(){ return rotation_; };
void CalculateWorkPosition(int master_index_);
void ResetWorkPosition(){ /*position_mutex_.lock();*/ work_position_ = orig_position_; /*position_mutex_.unlock();*/ };
void TakeOwnership(int master_index_);
void RelinquishOwnership();
private:
int index_;
int num_philosophers_;
float rotation_;
_position orig_position_;
_position work_position_;
//std::mutex master_mutex_;
//std::mutex position_mutex_;
};
Instantiation:
for (int i = 0; i < num_philosophers_; i++)
{
Fork temp_fork_(num_philosophers_, i);
fork_.push_back(temp_fork_);
}
Edit:: New Declaration:
class Fork
{
public:
Fork();
Fork(int num_phil_, int new_index_);
Fork(Fork const&) = delete;
Fork& operator=(Fork const&) = delete;
struct _position
{
float x;
float y;
};
_position ReturnWorkPosition(){ _position return_position_; /*position_mutex_.lock();*/ return_position_ = work_position_;
/*position_mutex_.unlock();*/ return return_position_; };
float ReturnRotation(){ return rotation_; };
void CalculateWorkPosition(int master_index_);
void ResetWorkPosition(){ /*position_mutex_.lock();*/ work_position_ = orig_position_; /*position_mutex_.unlock();*/ };
void TakeOwnership(int master_index_);
void RelinquishOwnership();
private:
int index_;
int num_philosophers_;
float rotation_;
_position orig_position_;
_position work_position_;
//std::mutex master_mutex_;
//std::mutex position_mutex_;
};
Error messages:
Error 18 error C2280: 'Fork &Fork::operator =(const Fork &)' : attempting to reference a deleted function c:\program files (x86)\microsoft visual studio 12.0\vc\include\xutility 2045 1 Lab3e
Error 13 error C2280: 'Fork::Fork(const Fork &)' : attempting to reference a deleted function c:\program files (x86)\microsoft visual studio 12.0\vc\include\xmemory0 600 1 Lab3e
New Instantiation:
for (int i = 0; i < num_philosophers_; i++)
{
Fork temp_fork_(num_philosophers_, i);
fork_.emplace_back(temp_fork_);
}