快速而愚蠢的问题。 如果不允许使用全局变量,如何声明数组的大小?
假设我有文件Album.h
:
class Album {
private:
Song songs[MAX_SONGS];
//...
}
我在哪里放MAX_SONGS = 30
?
const int MAX_SONGS = 30
被认为是一个变量吧?
请注意整个程序应该知道大小。
答案 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
预处理程序命令。
#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];
//...
}