繁体   English   中英

如何在C ++中声明数组的固定大小

[英]How to declare a fixed size for an array in C++

快速而愚蠢的问题。 如果我不允许使用全局变量,如何声明数组的大小?

假设我有Album.h文件:

class Album {
private:
    Song songs[MAX_SONGS];

    //...

}

我在哪里放MAX_SONGS = 30 const int MAX_SONGS = 30被认为是变量对吗? 请注意,整个程序应该知道大小。

class Album {
private:
    static const int MAX_SONGS = 100;
    Song songs[MAX_SONGS];

    //...
};

请注意,静态const变量的内联初始化仅允许类型为整数的那些。 另请注意,无论初始化如何,这仍然只是一个声明而不是定义。 您通常不需要这个定义,尽管在某些情况下您会这样做。

至于可见性,您可以提供一个返回MAX_SONGS的静态getter函数。

public:
static int GetMaxSongs() { return MAX_SONGS; }

const int MAX_SONGS = 30被认为是变量对吗?

是的, MAX_SONGS是一个变量,但它是一个常量变量。 它无法改变。

并非全局变量是不可取的,如果可以避免的话,全局可变状态是不可取的。 这里没有可变状态: MAX_SONGS无法改变。

要避免static使用,请使用enum

class Album {
    private:
        enum { MAX_SONGS = 30 };
        Song songs[MAX_SONGS];

        //...
    }

您也可以使用#define预处理程序命令。

在Album.h中

#define MAX_SONGS 30

在Album.cpp中

#include "Album.h"
class Album {
private:
    Song songs[MAX_SONGS];
//...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM