0

テンプレートと静的メンバーを使用していくつかのアイデアを実装しています。「実際の」コードは別のエラーを生成しますが、これはおもちゃのサンプルコードにまだあるエラーです

#include <string>
#include <iostream>

template<int dim>
class Class1 {
  public:
     Class1() {};
    ~Class1() {};
     void foo() {
        std::cout<<"foo-1"<<std::endl;
     }
   protected:
     std::string name;
};

template<int dim>
class Class2 : public Class1<dim>
{
  public:
     Class2(const int & a, const int &b) : 
        number( Class2<dim>::id_generator++ ) 
     {
        Class1<dim>::name = "My-name"; 
        foo(); // (1)
      };

 void foo() {
    Class1<dim>::foo();
    std::cout<<"foo-2"<<std::endl;
 }

 private:
    const unsigned int number;
    static unsigned int id_generator;
};

 int main() 
 {
    int a = 1, b=2;
    Class2<2> class2(a,b);   // (2)
 }

リンカーエラーで:

 undefined reference to `Class2<2>::id_generator' 

実際の例では 2 つのエラーが発生します

 (1) required from 'Class2<dim>::Class2(int, int) [with int dim = 3]'
 (2) required from here.

その実際のエラーは、まったく何も教えてくれません! :(おもちゃの問題が解決されれば、現実の問題もなくなることを願っていますが、構造のコンテキストで「現実の」エラー(これらの2行)について誰かがアイデアを持っている場合は、pls、お知らせ下さい。

4

2 に答える 2