传递双指针和指针作为参数的区别

问题描述

  1. 将 * 作为函数参数传递
#include <iostream>

class A {

 public: 
  A() {}

};


class B : public A{
 public:
  B() {}

};

void foo(A* a) {
 a = new B();

}

void ff() {
  A a;
  foo(&a);
}
  1. 将**作为函数参数传递
#include <iostream>

class A {

 public: 
  A() {}

};


class B : public A{
 public:
  B() {}

};

void foo(A** a) {
 *a = new B();

}

void ff() {
  A* a;
  foo(&a);
}

当我看到 leveldb 时,我对此感到困惑。

具体代码如下。

https://github.com/google/leveldb/blob/master/db/db_impl.cc#L1537

我认为可以使用 FileLock lock

然后将 &lock 传递给 LockFile(const std::string& filename,FileLock* lock)

LockFile 函数是 this

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)