مشکل از ()add هست . اگر ذره ذره بررسی کنیدش متوجه میشید .
tab یک vector هست که هر عضوش از نوع <vector<Colour . و هر عضو <vector<Colour از نوع Colour است .
[0] tab یک ارجاع به اولین عنصر خودش که یک <vector<Colour هست رو برمیگردونه .
پس شما حالا یک &<vector<Colour دارید و شما با [column] به عنصری که نسبت به مقدار column هست دسترسی پیدا میکند . یعنی یک &Colour به شما برمیگردونه .
پس شما تا اینجا (یعنی [tab[0][column ) یک &Colour دارید
و بعدش جلوی یک شی &Colour نوشتید ;(push_back(colour. .
برای همین برنامه به مشکل میخوره چون از یک شی &Colour یک enum هست متد یک شی std::vector رو فراخوانی کردید .
اینا توضیح بود که دلیلش رو بدونید .
( خودمم یکم بیکار بودم )
کدتون رو اینجوری تغییر بدید
:
void Game:: add(size_t column, Colour const& colour) {
tab[column].push_back(colour);
}
یا اینطوری :
void Game:: add(size_t column, Colour const& colour) {
vector<vector<Colour>>::iterator it = tab.begin();
it[column].push_back(colour);
}