静态常量整型数据成员在类中初始化

他说“information::count”:只有静态常量整型数据成员才可以在类中初始化
这个问题应该怎么改
查了查说在类外声明一下也还是不对


struct information
{
    bool flag;//如果flag==true,有中转点
    char ch1[20];//起点
    char ch2[20];//中转点,
    char ch3[20];//终点
 
    int price;
    int time;
    int flight[2];
 
    int price1;
    int price2;
    
    int Boarding_hour;//起飞时间
    int Boardint_min;
 
    int Landing_hour;//到达时间
    int Landing_min;
 
     int count=1;//排序用
}
info[30],infotime[30],infoprice[30],infoevenout[30];

你可能理解有误, 对于静态成员, 必须在类外定义, 应为它不属于任何一个对象, 而是属于整个类.
*
但类似如下的成员, 且仅用于类内使用的可以在类内定义,

    constexpr static int a = 0;

*
其它的你可以在类内声明时给一个默认值, 也可在构造函数中进行初始化, 像你示例中的那样

int count=1;
->
int count;
在你的主程序里
info[xxx].count = 1;

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/824469
  • 这篇博客你也可以参考下:下面程序用变量count统计文件中字符的个数
  • 以下回答来自chatgpt:

    问题解答:

    题目要求在类中初始化一个静态常量整型数据成员,参考资料中提到只有静态常量整型数据成员才可以在类中初始化,所以只能使用类内初始化来实现。

    以下是类内初始化静态常量整型数据成员的示例代码:

    #include <iostream>
    using namespace std;
    
    class Test{
    public:
        static const int num = 100; //类内初始化静态常量整型数据成员
        void print() const {
            cout << num << endl;
            //num++;  静态常量数据成员不能被修改
        }
    };
    
    int main(){
        Test t;
        t.print(); //输出 100 
        return 0;
    }
    

    将静态常量整型数据成员定义为常量,可以避免被修改,同时可以直接在类内初始化。

    如果该方法无法实现题目要求,可能因为类中的静态常量数据成员有其他特殊属性导致无法在类内初始化,此时可以尝试使用类外初始化,或者使用其他方式实现相关需求。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^