簡體   English   中英

C ++成員初始化列表/在類中創建對象

[英]C++ Member Initialization List / Creating Objects In A Class

我無法使我的代碼正常工作。 我對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;
}

提前謝謝了

您可以像這樣簡單地創建對象:

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

或者,您可以在構造函數中執行此操作而不使用load函數:

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

在這種情況下,您需要編寫對象的構造函數

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM