A
Aadain
I've run into a road block with porting some C++ code that makes use
of templates to Java. In it, there is a main class I'll call A that
is a template class:
// C++
template <class T> class A
public:
virtual T Evaluate() const = 0;
};
Other classes extend this class:
// C++
template <class T> class B : public A<T> {
public:
B(const T &v) { value = v; }
T Evaluate() const { return value; }
private:
T value;
};
Now all of this is easy to implement in Java using Generic
programing. The issue I'm having is when I try to implement code like
this:
template <class T1, class T2> class C : public A<T2> {
public:
C(A<T1> a, A<T2> b) { t1 = a; t2 = b; }
T2 Evaluate() {
return t1->Evaluate() * t2->Evaluate();
}
private:
A<T1> t1;
A<T2> t2;
};
Java complains about about the * operator being undefined for
arguments T1, T2; Since Java doesn't have operator overloading, I
can't really see how to implement the same functionality. Has anyone
ever encountered this type of problem, or can anyone see a way around
this issue?
of templates to Java. In it, there is a main class I'll call A that
is a template class:
// C++
template <class T> class A
public:
virtual T Evaluate() const = 0;
};
Other classes extend this class:
// C++
template <class T> class B : public A<T> {
public:
B(const T &v) { value = v; }
T Evaluate() const { return value; }
private:
T value;
};
Now all of this is easy to implement in Java using Generic
programing. The issue I'm having is when I try to implement code like
this:
template <class T1, class T2> class C : public A<T2> {
public:
C(A<T1> a, A<T2> b) { t1 = a; t2 = b; }
T2 Evaluate() {
return t1->Evaluate() * t2->Evaluate();
}
private:
A<T1> t1;
A<T2> t2;
};
Java complains about about the * operator being undefined for
arguments T1, T2; Since Java doesn't have operator overloading, I
can't really see how to implement the same functionality. Has anyone
ever encountered this type of problem, or can anyone see a way around
this issue?