template <typename T>
class BaseTemplate {
public:
BaseTemplate(T value) : data(value) {}
void print() {
std::cout << "BaseTemplate: " << data << std::endl;
}
private:
T data;
};
template <typename U>
class DerivedTemplate : public BaseTemplate<U> {
public:
DerivedTemplate(U value, U additionalValue)
: BaseTemplate<U>(value), additionalData(additionalValue) {}
void printDerived() {
std::cout << "DerivedTemplate: " << this->getValue() << " Additional: " << additionalData << std::endl;
}
private:
U additionalData;
};
int main() {
DerivedTemplate<int> derivedInstance(42, 100);
derivedInstance.print(); // Accessing base class function
derivedInstance.printDerived(); // Accessing derived class function
return 0;
}