У меня есть независимый класс с шаблоном, который выполняет перегрузку для некоторого оператора, и я хочу поместить его в качестве триггера для класса вызывающего.Пример кода:
Независимый класс
template <typename DataType>
class IndependentClass{
public:
DataType _value;
IndependentClass(){};
IndependentClass(DataType val):_value(val){};
~IndependentClass(){};
IndependentClass& operator=(const IndependentClass<DataType>& mu){
if (this != &mu){
_value = mu._value;
//I want to trigger caller method from here
//But how this class can know the caller class?
// _caller.callParentMethod();
}
return (*this);
}
IndependentClass& operator=(int val){
return (operator=(IndependentClass<DataType>(val)));
}
DataType getValue()const{
return _value;
}
};
Базовый класс
class BaseClass{
public:
int sum;
BaseClass(){};
~BaseClass(){};
void setValue(int value){sum+=value;}
int getValue(){return sum;}
};
Производный класс
В этом классе будет использоваться независимый класс.
//Declare Independent Class
typedef IndependentClass<int> I8;
class DerivedClass : public BaseClass{
public:
I8 sumThisClassValue;
DerivedClass(){
methodDerivedClass();
};
~DerivedClass(){};
void methodDerivedClass(){
sumThisClassValue = 8;
Base::setValue(4);
cout<<"Value = "<<Base::getValue()<<endl; //Output 4
cout<<sumThisClassValue<<endl;
cout<<"Value = "<<Base::getValue()<<endl; //Output that I want is 12
}
void callParentMethod(int _val){
Base::setValue(_val);
}
};
Main
int main(){
DerivedClass objectTLM;
return 0;
}
До сих пор я думал использовать 2шаблон template<typename DataType, typename Caller>
и добавьте еще один конструктор в мой Независимый класс, но все же, как я могу передать сам производный класс, т.е. (I8 objA = new I8(this))
* Он также не работал
В сценарии реального кода у меня есть несколько производных классовиз того же базового класса, и базовый класс может контролировать каждое значение для каждого производного класса.
Пожалуйста, помогите.Спасибо.