0

次のコード行では、テンプレート引数の数が間違っているという以下のコンパイルエラーが発生します。この宣言の何が問題なのか教えていただけますか?それは私には大丈夫に見えます。ServicePartitionKeyの内容は下部にあります。

   //Line 107 where template arguments issue happens is this declaration line
   std::map<ServicePartitionKey key, std::vector<EndPointAddr*>* > mServiceMap;

コンパイルメッセージ:

In file included from ServiceRegistrar.hpp:8:0,
                 from ServiceRegistrar.cpp:7:
 ../control_api/ServiceRegistrarAPI.hpp:107:66: error: wrong number of template  arguments (1, should be 4)
In file included from /usr/include/c++/4.7/map:61:0,
             from ../control_api/ServiceRegistrarAPI.hpp:9,
             from ServiceRegistrar.hpp:8,
             from ServiceRegistrar.cpp:7:

クラスServicePartitionKey

#include <cstdint>

class ServicePartitionKey
{
 public:  
    ServicePartitionKey() {};
    ServicePartitionKey(uint32_t instanceNo, uint64_t version);
    ~ServicePartitionKey() {};

   bool operator < (const ServicePartitionKey &rhs) const;

   void setInstanceNo(uint32_t instanceNo) { mInstanceNo = instanceNo; }  
   uint32_t getInstanceNo() const { return mInstanceNo; }

   void setVersion(uint64_t version) { mVersion = version; }  
   uint64_t getVersion() const { return mVersion; } 

 private:
   uint32_t mInstanceNo;
   uint64_t mVersion;
};
4

1 に答える 1

6

テンプレートはタイプだけである必要があります。最初のものに宣言のような構文を与えました:

std::map<ServicePartitionKey key, std::vector<EndPointAddr*>* > mServiceMap;
//                           ^^^

次のようになります。

std::map<ServicePartitionKey, std::vector<EndPointAddr*>* > mServiceMap;
于 2013-03-25T18:15:28.853 に答える