gpt4 book ai didi

c++ - 在另一个类构造函数中初始化一个类对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:02 27 4
gpt4 key购买 nike

我是 C++ 新手。好吧,我有 box.cpp 和 circle.cpp 文件。在我解释我的问题之前,我想给你他们的定义:

在box.cpp中

  class Box
{
private:
int area;

public:
Box(int area);
int getArea() const;

}

在circle.cpp中

   #include "box.h"
class Circle
{
private:
int area;
Box box;

public:
Circle(int area, string str);
int getArea() const;
const Box& getBoxArea() const;

}

现在您可以在 Circle 类中看到我有一个整数值和 Box 对象。在 Circle 构造函数中,我可以轻松地将整数值分配给区域。

一个问题是我得到了一个字符串,用于将它分配给 Box 对象

所以我在 Circle 构造函数中所做的是:

 Circle :: Circle(int area, string str)
{
this->area = area;
// here I convert string to an integer value
// Lets say int_str;
// And later I assign that int_str to Box object like this:
Box box(int_str);

}

我的意图是同时访问 Circle 面积值和 Circle 对象面积值。最后我写了函数 const Box& getBoxArea() const;像这样:

  const Box& getBoxArea() const
{
return this->box;
}

结果我没有得到正确的值。我在这里缺少什么?

最佳答案

Circle 的构造函数中,您试图创建 Box 的实例,但为时已晚,因为当构造函数的主体将被执行时, Circle 应该已经构建好了。类 Box 要么需要默认构造函数,要么您需要在初始化列表中初始化 box:

Box constructBoxFromStr(const std::string& str) {
int i;
...
return Box(i);
}

class Circle
{
private:
int area;
Box box;

public:
Circle(int area, string str)
: area(area), box(constructBoxFromStr(str)) { }
...
}

关于c++ - 在另一个类构造函数中初始化一个类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19355857/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com