我可以在另一个类中实例化一个对象吗?

时间:2020-10-16 13:33:35

标签: c++

我有一个要实例化到代码中的类Fluid的类Well。但是,当我通过Fluid fluid(/*parameters*/)构造函数中的Well调用它时,无法在类Well的其他方法中使用该对象。

class Fluid {
public:
    Fluid() {
        // constructor
    }
};

class Well {
public:
    Well() {
        Fluid fluid(/*parameters*/);
    }
};
    
int main() {
    Well well();
}

3 个答案:

答案 0 :(得分:2)

我假设您想将其保存为成员变量

class Well{
public:
  Well() : fluid(...parameters) { }

  void SomeMethod();
private:
  Fluid fluid;
};

然后您可以访问该成员

void Well::SomeMethod()
{
    fluid.do_something();  // can use fluid now
}

答案 1 :(得分:1)

您的Well必须具有Fluid类型的成员才能在构造函数之外的其他函数中使用。

class Well{
Fluid fluid;
public:
Well() : fluid( /* parameters */ )
{
}
};

此外,如果您发布实际编译的代码,也会有所帮助。

答案 2 :(得分:0)

为了通过Well的其他功能进行访问,您的fluid应该是成员变量。这是一个简单的示例:

#include <iostream>

class Fluid{
public:
    Fluid(){}
    void splash() {std::cout << "splash" << std::endl;}

};

struct Well{
public:
    Well(): fluid(/*params*/) { }
    void get_water () { fluid.splash();};
private:
    Fluid fluid;
};


int main(){
    Well well;
    well.get_water();
}

实时演示:godbolt

相关问题