在Function参数中创建Friend Class实例

时间:2015-06-11 04:04:35

标签: c++ friend-function friend-class

我是使用C ++的新手。我需要将一个类的实例声明为另一个类中函数的参数,并将参数实例声明为朋友。我用一个例子说明。

 public static Integer[] optimizedbubbleSort(Integer[] input){
    long startTime = System.nanoTime();
    boolean swapped = true;
    for(int pass=input.length-1; pass>=0 && swapped; pass--){
        swapped = false;
        for(int i=0; i<pass; i++){
            if(input[i]>input[i+1]){
                int temp = input[i];
                input[i] = input[i+1];
                input[i+1] = temp;
                swapped = true;
            }
        }
    }
    System.out.println("Time taken for OPTIMIZED bubbleSort: "+(System.nanoTime() - startTime));
    return input;
}

在上面的例子中,我需要声明类other_foo作为foo的朋友,这样我就可以使用foo类'private function'了“。我已经阅读了许多其他参考文献,但没有明确的指南,无论它是否真的可行。如果没有,你能否建议一个解决方法? 我试图在类foo定义中将other_foo声明为friend,但编译器向other_foo抛出了一个错误,即私有方法无法访问。我也尝试在参数本身中将该实例声明为“friend foo f”,但编译器为此抛出了一个错误。我在哪里真正需要声明该类other_foo是类foo的朋友类?

1 个答案:

答案 0 :(得分:0)

*

现在other_foo可以访问class foo{ private: void a(){ // function definition } friend class other_foo; }; class other_foo{ public: void b(foo f){ // function definition } }; 的私人会员。类名称前面的括号是不必要的,并且在类定义之后添加了foo