1. ホーム
  2. c++

[解決済み] error: 'test' のアウトオブライン定義が 'B<dim>' のどの宣言とも一致しない。

2022-02-08 02:18:37

質問

小さな問題があって、困っています! 以下のコードで何が問題なのかわかりません。スーパークラスから継承された関数を実装すればいいはずなのですが 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;
}

Macでclang(Apple LLVM version 5.1)を使っています。

解決方法を教えてください。

試す

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;
}

まだ必要なのは 定義 という関数がクラス宣言で宣言されています。