0

我试图在很长一段时间内完成我的第一次编译,我认为这是最后一个障碍。

我正在尝试在我的设计中创建这种类型的层次结构。

  class chin_
  {
  private:
    charon_* engine;

  public:
    chin_();
    chin_(charon_ &handle)
    {
      engine = handle;
    }
    ~chin_();
  };

//////////////

  class charon_ {
  private:
    chin_ engine_input;

  public:
    charon_(){
      engine_input = chin_(this);
    }
    ~charon_();
  };

我收到错误消息,告诉我没有可调用的匹配函数

'chio::chin_::chin()'

它还说,请注意,这只是当我将构造函数更改为 charon_&

public:
        chin_(const charon_ &handle)
        {
          engine = handle;
        }
sys/../headers/chio.h:104:5: note:   no known conversion for argument 1 from ‘charon::charon_* const’ to ‘const charon::charon_&’

当我使用 * 而不是 & 时,我得到了这个,这更令人困惑。

sys/../headers/chio.h:104:5: note: chio::chin_::chin_(const charon::charon_*)
sys/../headers/chio.h:104:5: note:   candidate expects 1 argument, 0 provided

我已经尝试过这个和那个,我认为这可能是超级简单的事情。我已经尝试将我的代码与我找到的示例完全匹配,所以我不知道我还应该尝试什么,我希望能够自己解决这类问题。我只是没有运气。

编辑:我更新了代码,但我将更新后的错误留在了底部。

sys/chin.cpp:19:14: error: cannot convert ‘charon::charon_’ to ‘charon::charon_*’ in assignment

它带我进入这段代码

  chin_::chin_(charon_ &handle) {
    engine = handle;
  }

引擎定义为 charon_* 引擎;并且句柄似乎是一个地址,应该就位,但事实并非如此。我想我没有正确使用它。

4

1 回答 1

1

当你声明这样的事情时:

  chin_ engine_input;

chin_ 需要一个没有参数的构造函数,或者你必须在初始化列表中将参数传递给它,否则你会得到关于没有匹配构造函数的错误。

你可以做的是要么有一个不带参数的默认构造函数。或者使 engine_input 成为一个指针并使用以下命令创建它:

 engine_input = new chin_(handle);

或者,您可以在初始化列表中将句柄传递给 chin_,如下所示:

 foo::foo(charon* handle):
 chin_(handle)
{

}
于 2012-04-15T16:41:19.643 回答