0

typeリスト要素のデータ型とリスト内の要素数の2 つのテンプレート引数を持つクラスのプライベート メンバーとしてリストがsizeあります。この目的のために、2 つのテンプレート引数を使用してリストの塗りつぶしコンストラクターを使用したいと考えています。これが私の試みです:

#include <list>

template <typename type, unsigned int size>
class my_class {

   private:
      std::list<type> my_queue(size, 0);

   // More code here...

};

私のアプローチは、ここで提供されている情報と例に従っているようです。しかし、これをコンパイルすると、次のエラーが発生します。

error: 'size' is not a type
error: expected identifier before numeric constant
error: expected ',' or '...' before numeric constant

塗りつぶしコンストラクターではなく、デフォルトのコンストラクターによってリストの宣言を認識しているようです。誰でもこれを解決するのを手伝ってもらえますか?

ありがとうございました!

編集:これが私の改訂されたソースであり、詳細が記載されています。私は現在、パブリックメソッドに問題があります。注:これは私のクラスのヘッダー ファイルです。

#include <list>

template <typename T, unsigned int N>
class my_class {

   private:

      std::list<T> my_queue;

   public:

      // Constructor
      my_class() : my_queue(N, 0) { }

      // Method
      T some_function(T some_input);
      // The source for this function exists in another file.

};

編集 2:最終実装... ありがとう、@billz!

#include <list>

template <typename T, unsigned int N>
class my_class {

   private:

      std::list<T> my_queue;

   public:

      // Constructor
      my_class() : my_queue(N, 0) { }

      // Method
      T some_function(T some_input){
         // Code here, which accesses my_queue
      }

};
4

1 に答える 1

2

C++ 11より前のコンストラクターでのみメンバー変数を初期化できました。テンプレート引数として大文字を使用することをお勧めします。

template <typename T, unsigned int N>
class my_class {
   public:
    my_class() : my_queue(N, 0) { }

   private:
      std::list<T> my_queue;

   // More code here...

};

編集:

T some_function(T some_input); some_functionC++ は inclusive-module のみをサポートします。my_class が宣言されているのと同じファイルで定義する必要があります。

于 2013-02-03T07:24:08.423 に答える