I want to use references from the base class without initializing them in the derived class. Is that possible? If so, how?
The example code below generates an error, i.e.line 28: error #368: "Base::Base()" provides no initializer for: reference member "Base::BaseVar1" reference member "Base::BaseVar2"
#include <stdio.h> class Base { protected: int & BaseVar1; int & BaseVar2; public: Base() = default; Base(int & BaseVar1, int & BaseVar2) : BaseVar1(BaseVar1),BaseVar2(BaseVar2){} virtual void vfunction1(void) = 0; }; class Derived1: public Base { public: Derived1(int & Derived1Var1): Derived1Var1(Derived1Var1) { } int & Derived1Var1; void vfunction1() { printf("BaseVar1 = \n",BaseVar1); printf("BaseVar2 = \n",BaseVar2); printf("Derived1Var1 = \n",Derived1Var1); } }; class Derived2: public Base { public: Derived2(int & Derived2Var1): Derived2Var1(Derived2Var1) { } int & Derived2Var1; void vfunction1() { printf("BaseVar1 = \n",BaseVar1); printf("BaseVar2 = \n",BaseVar2); printf("Derived2Var1 = \n",Derived2Var1); } };
Derived1(int & Derived1Var1, int & BaseVar1FromDerived1, int & BaseVar2FromDerived1): Base(BaseVar1FromDerived1, BaseVar2FromDerived1), Derived1Var1(Derived1Var1)