C ++成员初始化列表/在类中创建对象

时间:2014-08-20 08:52:00

标签: c++ class constructor initialization sfml

我无法让我的代码工作。我对C ++很陌生,但基本上我要做的就是在另一个类中创建一个类的对象。

我已经阅读了很多东西,试着让它发挥作用,但显然我已经完全错过了一些重要的步骤。

基本上调用MainWindow.load()应该创建对象,MainWindow.loop()应该返回它们。对于背景,在最终项目中; MainWindow.load()会设置纹理(只需要执行一次),而MainWindow.loop()会连续绘制纹理。

如果你能看一下我的示例代码,我将不胜感激:

#include <iostream>

class objects
{
private:
    int n;
public:
    void create (int);
    int output ();
};

void objects::create(int inputn)
{
    n = inputn;
}

int objects::output()
{
    return n;
}

class mainwindow
{
private:
    objects value1;
    objects value2;

public:
    void load();
    void loop();
};

void mainwindow::load()
{
    mainwindow() :  value1.create(56),
                    value2.create(72){}
}

void mainwindow::loop()
{
    std::cout << value1.output() << "\n";
    std::cout << value2.output() << "\n";
}

int main()
{
    mainwindow MainWindow;
    MainWindow.load();

    for(int i = 1; i <= 5; i++)
    {
        std::cout << "Loop " << i << ":\n";
        MainWindow.loop();
        std::cout << "\n";
    }

    return 0;
}

非常感谢提前

1 个答案:

答案 0 :(得分:2)

你可以像这样简单地创建Object:

void mainwindow::load()
{
    value1.create(56);
    value2.create(72);
}

或者您可以在构造函数中执行它而不使用load函数:

mainwindow::mainwindow()
    :value1(56),
    value2(72)
{
}

在这种情况下,您需要编写对象的构造函数

objects::objects(int arg = 0)
    :n(arg)
{
}