gpt4 book ai didi

C++ 嵌套类方法

转载 作者:太空狗 更新时间:2023-10-29 20:53:26 24 4
gpt4 key购买 nike

我想创建一个类似这样的结构:

template <typename W>
class Graph {
public:
struct Vertex {
std::vector<typename Graph<W>::Vertex> next() {
return GetNext((*this));
}
};
virtual std::vector<typename Graph<W>::Vertex> GetNext(Vertex v) = 0;
};

(不要查看缺失的字段等)

我已经尝试过类似的方法,但它给出了各种错误,包括语法错误或“无法实例化”,甚至认为我尝试实例化已覆盖 GetNext 的派生类。

问题是:在 C++ 中是否允许使用该结构以及如何正确实现它?

最佳答案

您的代码的唯一问题是您从 Vertex 调用了 GetNextVertex 没有 GetNext 成员功能。

如果你想从Vertex调用Graph的方法,那么你需要一个Graph变量来调用它,例如一个成员变量:

struct Vertex {
Graph& graph;

std::vector<typename Graph<W>::Vertex> next() {
return graph.GetNext(*this);
}
};

关于C++ 嵌套类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com