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

时间:2012-01-11 21:17:38

标签: c++

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

假设我有文件Album.h

class Album {
private:
    Song songs[MAX_SONGS];

    //...

}

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

4 个答案:

答案 0 :(得分:8)

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

    //...
};

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

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

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

答案 1 :(得分:3)

  

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

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

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

答案 2 :(得分:0)

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

Album.h中的

#define MAX_SONGS 30
Album.cpp中的

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

答案 3 :(得分:0)

要避免使用static,请使用enum

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

        //...
    }