繁体   English   中英

我如何从主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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM