这是我试图使用的打印功能,但它不起作用。目前它位于main()文件中,但在main()本身之外。我一直在接受 c2228:" .data"的左边必须有class / struct / union 我根本不是编码专家,而且我很难搞清楚这一点。因为它是一个模板我假设p还没有任何东西而且无法传递给inorder函数问题是如何解决这个问题我找不到任何甚至接近我的东西理解。请提供一个可行的示例或解决方案,并尽可能接近noob级别。谢谢!
template <class Entry>
void print(Entry&);
template <class Entry>
void print(Entry& p)
{
cout << p.data << endl;
}
这是我尝试使用的功能。我需要迭代遍历AVL树并使用这个传递的打印函数来访问和打印来自节点的数据。
声明
void inorder(void(*visit)(Entry &));
实施
template<class Entry>
inline void Binarytree<Entry>::inorder(void(*visit)(Entry &))
{
}
在main()
中调用tree.inorder(print);
答案 0 :(得分:0)
您在二叉树中使用的Entry
类型看起来没有名为data
的成员。树中的条目是什么?英特尔,还是某类?
在任何情况下,这是编译代码的示例:
template <class Entry>
void print(Entry& p)
{
std::cout << p.data << std::endl;
}
template<class Entry>
class BinaryTree
{
public:
vector<Entry> items;
inline void inorder(void(*visit)(Entry &))
{
for (auto& it : items)
{
visit(it);
}
}
};
class SomeType
{
public:
int data;
};
int main()
{
BinaryTree<SomeType> a;
a.inorder(print);
}