error: out-of-line definition of 'test' does not match any declaration in 'B<dim>'

c++, inheritance, macos, templates, virtual

Solution

Try

template <int dim>
class B : public A <dim>
{
public:
     virtual double test () const;
};

// Function definition
template <int dim>
double B<dim>::test () const
{
  return 0;
}

You still need to define the function declared the class declaration.

Problem

I have a small problem that is killing me!! I don't know what seems to be wrong with the below code. I should be able to implement the function that is inherited from the super class, shouldn't I? but I get `error: out-of-line definition of 'test' does not match any declaration in 'B<dim>'` ``` template <int dim> class A { public: virtual double test() const ; }; template <int dim> class B : public A <dim> { }; template <int dim> double B<dim>::test () const { return 0; } ``` I am on a Mac using clang (Apple LLVM version 5.1).

Original source