这段代码正在迭代向量 &path 并且仅返回内存地址而不是实际值。我尝试过使用 &和 *

发布于 2025-01-10 19:41:05 字数 771 浏览 0 评论 0原文

void GraphTraversal::printPath(std::vector<const Node *> &path)
{
    cout << "START: ";
    for (auto it = path.begin(); it != path.end(); ++it)
    {
        cout << *it << "->";
    }
    cout << "END" << endl;
};

这是输出 START: 0x7ffe7bcd63b0->0x7ffe7bcd63b0->0x7ffe7bcd63b0->0x7ffe7bcd63b0->END

Node 类有两个私有变量

int nodeID;
std::set<const Edge *> outEdges;

要访问这些变量,有两个公共函数

int getNodeID() const { 
    return nodeID; 
}

// Get the private attribute outEdges 
std::set<const Edge *> getOutEdges() const { 
    return outEdges; 
}

我尝试使用以下代码来访问 nodeID,但效果不太好

it->getNodeID();
void GraphTraversal::printPath(std::vector<const Node *> &path)
{
    cout << "START: ";
    for (auto it = path.begin(); it != path.end(); ++it)
    {
        cout << *it << "->";
    }
    cout << "END" << endl;
};

This is the output START: 0x7ffe7bcd63b0->0x7ffe7bcd63b0->0x7ffe7bcd63b0->0x7ffe7bcd63b0->END

The Node class has two private variables

int nodeID;
std::set<const Edge *> outEdges;

To access these, there are two public functions

int getNodeID() const { 
    return nodeID; 
}

// Get the private attribute outEdges 
std::set<const Edge *> getOutEdges() const { 
    return outEdges; 
}

I have tried the following code to access the nodeID, but it doesn't work as well

it->getNodeID();

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

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

发布评论

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

评论(1

勿忘初心 2025-01-17 19:41:05
#include <iostream>
#include <vector>

using namespace std;

class A{
   public:
      int a;
   A(int a){
      this->a = a;
   }
};

int main()
{
   vector<A*> vec1;
   for(int i = 0 ; i < 5 ; i++){
      vec1.push_back(new A(i));
   }
   for (auto it = vec1.begin(); it != vec1.end(); it++){
      cout << (*it)->a << " ";
   }

   return 0;
}
Output : 0 1 2 3 4

我希望这能给你一个线索。由于向量中有一个指针,因此您还需要取消引用它。
因此,您需要按照 Nikolay Fomichev 的建议使用 (*i​​t)->getNodeID()

#include <iostream>
#include <vector>

using namespace std;

class A{
   public:
      int a;
   A(int a){
      this->a = a;
   }
};

int main()
{
   vector<A*> vec1;
   for(int i = 0 ; i < 5 ; i++){
      vec1.push_back(new A(i));
   }
   for (auto it = vec1.begin(); it != vec1.end(); it++){
      cout << (*it)->a << " ";
   }

   return 0;
}
Output : 0 1 2 3 4

I hope this gives you a clue. Since you have a pointer in your vector you need to dereference it as well.
So you need to use (*it)->getNodeID() as Nikolay Fomichev sugessted.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文