0

そのため、私はまだ C++ プログラミングの初心者であり、テンプレートに関しては非常に初心者です。一般的なデータと double を保持する基本的なテンプレート クラス (場合によってはノード) を作成しようとしています。次に、前述のテンプレート クラスのセットを含む別のクラスを作成します。

比較演算子としてサーバーに送信されるため、小なり演算子に問題があります。

Node&Tree.h

#ifndef _POINTNODE_H_
#define _POINTNODE_

#include <set>

template<typename T>
class PointNode {

 public:

  PointNode(double p){ m_point = p;}
  ~PointNode();

  bool operator < (const &PointNode<T> p1) const;

 private:

   const double m_point;
   T *m_data;

};

template <typename T>
class PointTree {

 public:

  PointTree();
  ~PointTree();

 private:

  std::set<PointNode<T> > tree;

};

#endif

ノード&ツリー.cpp

#inlcude "Node&Tree.h"
#include <set>

template<typename T>
bool PointNode<T>:: operator < (const &PointNode<T> p1) const{
   return m_point < p1.m_point;
}

次のエラーが表示されます

Node&Tree.cpp:5:39: error: ISO C++ forbids declaration of ‘parameter’ with no type [-   fpermissive]
Node&Tree.cpp:5:39: error: expected ‘,’ or ‘...’
Node&Tree.cpp:5:6: error: prototype for ‘bool PointNode<T>::operator<(const int&)   const’ does not match any in class ‘PointNode<T>’
Node&Tree.h:15:8: error: candidate is: bool PointNode<T>::operator<(const int&)"

これはほとんど実装されていませんが、少なくともコンパイルするための基本を取得したかっただけです...コードに関するポインタ、またはこれについてすべて間違っていると思われる場合は教えてください!

どんな助けでも素晴らしいでしょう!

4

2 に答える 2

2
bool PointNode<T>:: operator < (const &PointNode<T> p1) const

次のようにする必要があります。

 bool PointNode<T>:: operator < (const PointNode<T>& p1) const

参照&を間違った位置に置いたので、forbids declaration of parameter error. 別の場所にも同じエラーがあります。

bool operator < (const &PointNode<T> p1) const;

する必要があります

bool operator < (const PointNode<T>& p1) const;
于 2013-04-19T02:53:46.957 に答える
0

PointNode オブジェクトを参照にする

bool operator < (const PointNode<T>& p1) const;

そしてその定義

template<typename T>
bool PointNode<T>:: operator < (const PointNode<T>& p1) const{
   return m_point < p1.m_point;
}

これで問題は解決します。

于 2013-04-19T02:58:05.313 に答える