M
Matthias Pfeifer
Hi there,
i am implementing a Point and Vector class and found that they have some
things in common. Therefore i introduced a common parent class called
ndimobj, that hosts an array of n values, offers some constructors and
the following operator
template<size_t n, typename T>
class ndimobj
{
<SNIP>
public:
ndimobj<n, T>& operator= (const T s);
};
ndimobj is templated by the type of the elements that live in a given "n
dimensional space" (doubles, polynomials, etc...) and the dimension n.
Point is now derived from ndimobj like this
template<size_t n=3, typename T=float>
class Point : public ndimobj<n, T>
{
public:
double distance(Point<n,T> p)
{ <snip> }
};
If i do (in a test) program
Point <4, double> q;
q=3.0;
my compiler (g++) complains:
test.cc: 49: error no match for 'operator=' in 'q=3.0e+0'
Point.hpp: 22: note: candidates are: Point<4u, double>& Point<4u,
double>:perator=(const Point<4u, double>&)
Why is operator= not known. and why does g++ find this unsuitable
candidate?!
Please let me know if didn't give sufficiently information and i'll post
the complete interface of ndimobj and Point if it helps.
Thanks in advance
matthias
i am implementing a Point and Vector class and found that they have some
things in common. Therefore i introduced a common parent class called
ndimobj, that hosts an array of n values, offers some constructors and
the following operator
template<size_t n, typename T>
class ndimobj
{
<SNIP>
public:
ndimobj<n, T>& operator= (const T s);
};
ndimobj is templated by the type of the elements that live in a given "n
dimensional space" (doubles, polynomials, etc...) and the dimension n.
Point is now derived from ndimobj like this
template<size_t n=3, typename T=float>
class Point : public ndimobj<n, T>
{
public:
double distance(Point<n,T> p)
{ <snip> }
};
If i do (in a test) program
Point <4, double> q;
q=3.0;
my compiler (g++) complains:
test.cc: 49: error no match for 'operator=' in 'q=3.0e+0'
Point.hpp: 22: note: candidates are: Point<4u, double>& Point<4u,
double>:perator=(const Point<4u, double>&)
Why is operator= not known. and why does g++ find this unsuitable
candidate?!
Please let me know if didn't give sufficiently information and i'll post
the complete interface of ndimobj and Point if it helps.
Thanks in advance
matthias