![](/img/trans.png)
[英]How do I print a variable from main with a function in a class, Help understanding OOP c++
[英]how do i send a method in a template class a print function from main c++
这是我要使用的打印功能,但无法正常工作。 当前它在main()文件中,但在main()本身之外。 我一直收到c2228:“。data”的左边必须有class / struct / union我根本不是编码专家,因此很难弄清楚。 因为它是一个模板,所以我假设p还不是什么,并且不能传递给inorder函数,问题是我如何解决这个问题,所以找不到什至与我的理解相近的东西。 请提供一个可行的示例或解决方案,并使其尽可能接近菜鸟级别。 谢谢!
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);
看起来您在二叉树中使用的Entry
类型没有名为data
的成员。 您的树中有哪些条目? ints,还是某类?
无论如何,这是一个编译代码的示例:
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.