English 中文(简体)
简单问题: C++ 携带物体
原标题:
  • 时间:2009-06-06 02:31:06
  •  标签:

I m 不是C++专家,仍然对事情如何发挥作用没有很大的直觉了解。 我认为这是一个简单的问题。 我遇到麻烦,把物体带往其他国家。 我更愿意避免转点或提及,因为一旦确定初步物体,我就把数百万人放在紧凑的空档中。 我认为我大东像指挥模式。 这里是问题的核心。 我的头号法典类似:

class ObjectWithState {
public:
  ObjectWithState(int state) { // This constructor creates the problem!
    state_ = state;       // everyting works with no constructor.
  }
private:
  int state_;
};

class TakesObject {
public:
  TakesObject(ObjectWithState obj) {
    obj_ = obj;
  }
private:
  ObjectWithState obj_;
};

www.un.org/Depts/DGACM/index_french.htm

int main () {
  ObjectWithState some_object(1);
  TakesObject takes_object(some_object);
  return 0
}

我有以下错误(g++):

test.h: In constructor  TakesObject::TakesObject(ObjectWithState) :
test.h:14: error: no matching function for call to  ObjectWithState::ObjectWithState() 
test.h:5: note: candidates are: ObjectWithState::ObjectWithState(int)
test.h:3: note:                 ObjectWithState::ObjectWithState(const ObjectWithState&)

简单答案吗?

我不知道这是否与影印厂商有关。 如果是,我试图找到一种解决办法,使反对国的类别定义非常干净和简短。 该图书馆的用户将确定一些小型功能,如用于“目标”功能。 理想的做法是, Objects邦的策划者只需要注重执行简单的物体。 也许Im正 as......

最佳回答

您可能想做的是利用成员初次加入:

class TakesObject {
public:
  TakesObject(ObjectWithState obj): obj_(obj) {
  }
private:
  ObjectWithState obj_;
};

在您的《章程》中,<代码> 标的 构造者将首先尝试建造一个新的<代码>。 ObjectWithState with its default Constructionor, then <>>em>et thesign营运人拷贝通过obj to obj_。 以上例子直接使用其影印机构造obj_

还将需要: 反对:

class ObjectWithState {
public:
  ObjectWithState(int state) {
    state_ = state;
  }
  ObjectWithState(const ObjectWithState &rhs) {
    state_ = rhs.state_;
  }
private:
  int state_;
};

如果你从你的班级申报中删除所有建筑商,那么编辑就为你提供违约和复印件。 如果你宣布“ 任何>建筑商”,那么汇编商就提供no<>m> /m> 缺电或影印件,因此,你必须自行执行。

问题回答

你之所以重新犯了这一错误,是因为你重新宣布了施工者。 汇编者只有在你不宣布自己是某类建筑师时,才会提供违约建筑商。 由于你已宣布为建筑商,你没有违约。 你们必须明确宣布一个没有参数的建筑商。





相关问题