簡體   English   中英

我如何在公共類方法中初始化公共變量

[英]how do i initialize a public variable in a public class method

我有一個公共類,我在其中創建了一個數組,該數組從構造函數中獲取其大小,並且需要在其他函數中使用(包括 int main)。 因此變量必須是公開的。 我的代碼看起來像這樣:

class myclass {
    public:
    int parameter1;
    int parameter2;
    myclass(int p, int p2) {
        parameter1 = p;
        parameter2 = p2;
    }
    void makeArray() {
        int array[parameter1][parameter2]; //I want this array to be public as the next method needs access to it
    }
    void otherFunction() {
        array[1][2] = 5; //just an example of what i need to do
    }
}

查看如何使用指針和動態內存..

做你想做的事情是這樣的:

class myclass {
    public:
    int parameter1;
    int parameter2;
    int **a;

    myclass(int p, int p2) {
        parameter1 = p;
        parameter2 = p2;
        a = nullptr;
    }

    ~myclass() {
        // TODO: delete "a"
    }

    void makeArray() {
        // TODO: delete "a" if it has already been allocated

        a = new *int[parameter1];
        for (int i = 0; i < parameter1; ++i) {
          a[i] = new int[parameter2];
        }
    }

    void otherFunction() {
        // TODO: check that "a" has already been allocated
        a[1][2] = 5; //just an example of what i need to do
    }
}

您還可以在構造函數中分配數組,因為您已經傳入了必要的信息。

這是做同樣事情的更優化的方法:

class myclass {
    public:
    int parameter1;
    int parameter2;
    int *array;
    myclass(int p1, int p2) {
        parameter1 = p1;
        parameter2 = p2;
    }
    void makeArray() {
        array = new int[parameter1*parameter2];
    }
    void otherFunction() {
        // ary[i][j] is then rewritten as ary[i*sizeY+j]
        array[1*parameter2+2] = 5;
    }
};
int main()
{
    int sizeX = 5;
    int sizeY = 5;

    myclass m1(sizeX,sizeY);
    m1.makeArray();
    m1.otherFunction();
    cout << m1.array[1*sizeY+2] << endl;
    return 0;
}

暫無
暫無

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

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