【问题标题】:Declare a class of object and use it in the same Class in c++在c++中声明一个对象类并在同一个类中使用
【发布时间】:2020-09-29 01:20:13
【问题描述】:

我的问题是我试图声明对象节点,声明对象节点的向量并使用同一类的方法检查该向量,我的编译器(Visual Studio 2019)给我“错误:无法打开文件 main.obj。错误代码 = 0x80070002"。

有什么建议可以让它像我描述的那样工作吗?

这是我的代码:

class Node {

public:
    int Node_x, Node_y;
    Node(int x,int y){
        Node_x = x;
        Node_y = y;
    }

    bool is_Checked(Node point(int x, int y));
};
vector <Node> visited_Nodes; 
vector <Node> wall_Nodes;
std::vector<Node>::iterator it = visited_Nodes.begin();

bool Node::is_Checked(Node point(int x,int y)) {
    it = std::find(visited_Nodes.begin(), visited_Nodes.end(), point(Node_x, Node_y));
    if (it != visited_Nodes.end()) {
        return true;
    }
    else {
        visited_Nodes.push_back(point(Node_x, Node_y));
        return false;
    }
}

【问题讨论】:

  • bool is_Checked(Node point(int x, int y)); 应该是什么?这不是 C++ 的工作原理。
  • bool is_Checked(节点点(int x, int y));应该检查对象(Node)是否在节点向量(visited_nodes)中,如果不是,则将节点添加到访问节点
  • 不幸的是,世界上每个操作系统中使用的每个编译器都使用完全相同的错误代码和消息是不正确的。因此,在寻求有关编译错误的帮助时,将整个编译器错误消息逐字复制/粘贴为文本会很有帮助。这样,即使不使用与您完全相同的编译器的人也可以帮助您理解错误消息的含义。
  • bool Node::is_Checked(Node point(int x,int y)) --> bool Node::is_Checked(Node point).
  • 谢谢 Sam Varshavchik 我重新编辑问题

标签: c++ class vector methods


【解决方案1】:

所以基本上我发现我不能使用 find 函数在对象向量中查找对象(如果我错了请纠正我)所以我使用了对象的元素(它们是唯一的)

  class Node {

    public:
        int Node_x, Node_y;
        Node(int x,int y){
            Node_x = x;
            Node_y = y;
        }

        bool is_Checked(Node point(int x,int y));
    };
    vector <int> visited_Nodes_x;
    vector <int> visited_Nodes_y;
    //vector <Node> wall_Nodes;
    std::vector<int>::iterator it_x = visited_Nodes_x.begin();
    std::vector<int>::iterator it_y = visited_Nodes_x.begin();

   bool Node::is_Checked(Node point(int x,int y)) {
    it_x = find(visited_Nodes_x.begin(), visited_Nodes_x.end(), point(Node_x,Node_y).Node_x);
    it_y = find(visited_Nodes_y.begin(), visited_Nodes_y.end(), point(Node_x,Node_y).Node_y);
    if (visited_Nodes_x.empty() || it_x == visited_Nodes_x.end()) {
        visited_Nodes_x.push_back(point(Node_x,Node_y).Node_x);
        return false;
    }
    else {
        return true;
    }
}

【讨论】:

    猜你喜欢
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2014-03-24
    • 2010-10-15
    相关资源
    最近更新 更多