定义和使用不在头文件中的私有方法

Define and use private methods not in header file

本文关键字:文件 有方法 定义      更新时间:2023-10-16

我有一个情况,我不允许修改头文件为我的类。我想添加一个辅助函数来使用我的一个函数。但我不太清楚实现它的正确方法。通常我尝试谷歌,但找不到任何帮助。

下面是我当前的代码:

    template<typename T>
void Set<T>::doubleRotateRight(Elem *& node) {
    // you fill in here
    rotateRight(node->left);
    rotateLeft(node);
    //call private helper not defined in header
    privmed();
}
void privmed(){
    //out << "who" << endl;
}

然而,当我运行这个时,我得到了错误:

error: there are no arguments to ‘privmed’ that depend on a template parameter, so a declaration of ‘privmed’ must be available [-fpermissive]
     privmed();

任何帮助这将是不可思议的!

你可以直接使用lambda:

template<typename T>
void Set<T>::doubleRotateRight(Elem *& node)
{
    static auto const privmed = []() -> void 
    {
        //out << "who" << endl;
    };
    // you fill in here
    rotateRight(node->left);
    rotateLeft(node);
    //call private helper not defined in header
    privmed();
}

我认为问题是你必须在使用它之前定义"privmed()"函数,像这样:

void privmed(){
    //out << "who" << endl;
}
template<typename T>
void Set<T>::doubleRotateRight(Elem *& node) {
    // you fill in here
    rotateRight(node->left);
    rotateLeft(node);
    //call private helper not defined in header
    privmed();
}