在 C++ 中使用模板时类型不匹配

发布于 2024-10-19 09:30:21 字数 1089 浏览 2 评论 0原文

我已经编写了一个类模板(在文件 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`

行有什么问题,如何解决?

I've written a class template (in the file 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;
};

And I've written a test program:

#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;
}

When I try to compile it (using devcpp) the compiler puts out an error message regarding the lines int vstart = my_var.GetStart; and int vend = my_var.GetEnd;

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

What is the problem, and how do I fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱情眠于流年 2024-10-26 09:30:21

您尝试将函数分配给 vstart,而不是调用函数的结果:

int vstart = my_var.GetStart(); // <- I added () here
int vend = my_var.GetEnd();     // <- and here.

You're trying to assign the function to vstart, instead of the result of calling the function:

int vstart = my_var.GetStart(); // <- I added () here
int vend = my_var.GetEnd();     // <- and here.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文