I have a player variable which contains a vector of Resource class which derived from Name and ID class.
Problem lies when I'm compiling the code and the following errors appear during compilation.
resources.h(27): note: 'Resources &Resources::operator =(const Resources &)': function was implicitly deleted because a base class invokes a deleted or inaccessible function 'IdClass &IdClass::operator =(const IdClass &)' idclass.h(11): note: 'IdClass &IdClass::operator =(const IdClass &)': function was implicitly deleted because 'IdClass' has a data member 'IdClass::id' of const-qualified non-class type idclass.h(4): note: see declaration of 'IdClass::id' Basically what I did in Resources.cpp is, I had a function that initializes the Resources of the player's vector. I was weirded out by this error because I did not I looked around in StackOverflow for some answers but I haven't seen some helpful answers. This link came close but I'm not sure if changing the const into a non const value is what I need.
Here's the code.
in Resources.h
#include "NameClass.h" #include "IdClass.h" #include "settings.h" class PlayerClass; class Resources : public NameClass, public IdClass { public: /*Sets the name and id*/ Resources(string n, const short identifier):NameClass(n), IdClass(identifier){} static void InitializeResourceContainer(PlayerClass& player){ // playerInv is a struct // rssContainer is a vector<Resources> // name_x and id_x comes from settings.h which is #defined player.playerInv.rssContainer.push_back(Resources(name_Stone, id_Stone)); player.playerInv.rssContainer.push_back(Resources(name_Wood, id_Wood)); player.playerInv.rssContainer.push_back(Resources(name_Plastic, id_Plastic)); player.playerInv.rssContainer.push_back(Resources(name_Thatch, id_Thatch)); player.playerInv.rssContainer.push_back(Resources(name_Fabric, id_Fabric)); // this is line 27 // plus a lot of resources } } in IdClass.h
class IdClass { const short id;// line 4 public: /*Sets the id*/ IdClass(const short idToSet); /*returns the id*/ short GetId() const; }; // line 11 in IdClass.cpp
#include "IdClass.h" /*Sets the id*/ IdClass::IdClass(const short idToSet) : id(idToSet) { } /*returns the id*/ short IdClass::GetId() const { return id; } This is a small piece of the code I'm working on. If you guys need more explanation or code, I can give some in the comments below.
Edit 1: Looks like I forgot to place the error code after the output. Also I'm using Visual Studio 2017
Error C2280 'Resources &Resources::operator =(const Resources &)': attempting to reference a deleted function f:\visual studio\2017\vc\tools\msvc\14.10.25017\include\xutility 2310 Changing the variable from const short to short in IdClass.h would create a linker error in one of my classes.
Error LNK1120 1 unresolved externals Error LNK2001 unresolved external symbol "private: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > FileManager::playerName" (?playerName@FileManager@@0V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@A) ArchizzleGame C:\Users\CraftedGaming\Documents\Visual Studio 2017\Projects\ArchizzleGame\ArchizzleGame\FileManager.obj 1 So obviously the two threads that two commenters linked weren't that helpful.
What I aim to do is to get the id value from Resources.h to IdClass.h.
constmembers?