C++ 声明常量变量

C++ 声明常量变量,c++,constants,C++,Constants,我计划使用一个数组。。。myarray(行、列) 我想让row=3,col=3 此阵列将在 myclass{ private: myarray[row][col]; public: void myfunction(); //will use the value of Row & Col (Don't worry bout this function, I only put it here so you

我计划使用一个数组。。。myarray(行、列) 我想让row=3,col=3 此阵列将在

myclass{
  private:
        myarray[row][col];
  public:
        void myfunction(); //will use the value of Row & Col
         (Don't worry bout this function, I only put it here
              so you know the variables will be accessed)
}

Q.我想我应该将行和列都声明为常量变量,但我不确定它们应该在类中声明还是在类外声明。它们将被其他类函数访问。我正在将它们的定义放入我的cpp文件中。非常感谢任何人的建议-提前感谢

您可以使用全局宏定义行和列

#DEFINE COL 3
#DEFINE ROW 3

然后在代码中的任意位置使用COL和ROW,这完全取决于您。这取决于这些变量在程序中的使用方式。我个人的偏好是让他们成为班级成员。原因是将它们包装在类名空间中。这样,您可以在不同的类中拥有多个“col”和“row”常量

在您的情况下,必须在类中将它们声明为
static
。原因是在数组大小声明中使用它们

比如说,

class myclass {
public:
    static const int col = 3, row = 4;
    int myarray[row][col];
};
myclass mc1 = new myclass;
... myclass::col ... mc1->row ...
如果你在课外不需要它们,你可以把它们设为私人的


让它们全球化并没有错。在某些情况下,访问常量可能更容易。但是,其他程序员可能更难理解您的程序。

您的类的用户是否需要使用“行”和“列”值?如果没有,则将它们设置为类内的私有
constexpr
值。我们有2019年!使用旧的c宏不再是最先进的技术。请考虑<代码> CONTXPRP</代码>。如果OP希望常量成为类的一部分,那么c宏根本不适合!我想OP刚刚开始考虑问题的简单性,因此他们应该更加关注如何使事情顺利进行,然后构建最先进的终端程序。我们不应该提供不再有效的答案,特别是如果第一眼看上去很简单的话。在我们使用
constexpr
之前,类中一个简单的
const
甚至比全局宏更好。在这种情况下,c宏是一个好的解决方案吗?我不相信!