类成员变量(一维字符数组)定义及初始化


头文件

#pragma once

#include <iostream>
using namespace std;
typedef unsigned char uchar;
typedef unsigned short ushort;

class CM_message
{
public:
CM_message();
virtual ~CM_message();

private:
static const int m_ihead_len = 2;
static const int m_imax_body_len = 2048 - 2;
static const int m_iformat_len = 8;
std::size_t m_ibody_len;
std::size_t m_ioff_set;
static const char * const m_szformat_str;
uchar m_szdata[m_ihead_len + m_imax_body_len];
};

 实现文件

#include "pch.h"
#include "CM_message.h"

//定义
const char* const CM_message::m_szformat_str = "12345678";
const int CM_message::m_ihead_len;
const int CM_message::m_imax_body_len;
const int CM_message::m_iformat_len;

CM_message::CM_message()
{
std::memset(m_szdata, 0, m_ihead_len + m_imax_body_len);
m_ibody_len = 0;
m_ioff_set = 0;
}


CM_message::~CM_message()
{
}

 

这里要说的是uchar m_szdata[m_ihead_len + m_imax_body_len];由这个引出static const int m_imax_body_len = 2048 - 2;

有说static const int m_imax_body_len = 2048 - 2;叫声明,在实现文件里的叫定义

如果不在实现文件里进行定义,链接是会报错,实际在VS2017环境里,并没有报错。我发现“我笑痴狂”的博客里也说了linux下用GCC编译,也不会报错。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM