Несоответствие типов при использовании шаблона в C ++ - PullRequest
2 голосов
/ 25 февраля 2011

Я написал шаблон класса (в файле abc.hpp):

template <class Node>
class Edge {
public:
    Edge(Node n1, Node n2):_start(MIN(n1,n2)),_end(MAX(n1,n2)) {};
    Node GetStart ()const {return _start;}
    Node GetEnd ()const {return _end;}
    friend std::ostream& operator<<(std::ostream& os, const Edge<Node>& ed)
    {
        os << "(" << ed._start << ", " << ed._end << ")";
        return os;
    }
protected:
    Node _start;
    Node _end;
};

И я написал тестовую программу:

#include <iostream>
#include "abc.hpp"

int main (){
  Edge<int> my_var (1,2);
  Edge<int> my_var2 (1,3);
  int vstart = my_var.GetStart;
  int vend = my_var.GetEnd;
  cout << my_var << " : " << my_var2 << endl;
}

Когда я пытаюсьскомпилируйте его (используя devcpp), компилятор выдает сообщение об ошибке, касающееся строк int vstart = my_var.GetStart; и int vend = my_var.GetEnd;

argument of type `int(Edge<int>::)() const` does not match `int`

В чем проблема и как ее исправить?

1 Ответ

7 голосов
/ 25 февраля 2011

Вы пытаетесь назначить функцию vstart вместо результата вызова функции:

int vstart = my_var.GetStart(); // <- I added () here
int vend = my_var.GetEnd();     // <- and here.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...