Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2d-x-3.3rco版本<一>C++中类的静态的私有成员变量初始化问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

今天开始研究cocos2d-x-3.3rco版本,顺便温习一下C++知识,温故而知新~

知识点一:宏定义#pragma once与#ifndef...#define...#endif优劣,如VisibleRect.h中

#ifndef __VISIBLERECT_H__
#define __VISIBLERECT_H__

#include "cocos2d.h"

class VisibleRect
{
public:
static cocos2d::rect getVisibleRect();

static cocos2d::Vec2 left();
static cocos2d::Vec2 right();
static cocos2d::Vec2 top();
static cocos2d::Vec2 bottom();
static cocos2d::Vec2 center();
static cocos2d::Vec2 leftTop();
static cocos2d::Vec2 rightTop();
static cocos2d::Vec2 leftBottom();
static cocos2d::Vec2 rightBottom();
private:
static void lazyInit();
static cocos2d::rect s_visibleRect;//静态的私有成员变量
};

#endif /* __VISIBLERECT_H__ */

一般情况下,使用#pragma once即可,优点:代码简洁,维护性好,避免看重复定义以及包含范围时易出错的情况;编译速度快,编译器在此时根本不会重复打开文件,大大提高了效率。缺点#pragma once 不是国际标准,只是微软C++的一个功能,但现在大多数主流C++编译器也都实现了这个功能。

问题二:在这里碰见了static cocos2d::rect s_visibleRect;//静态的私有成员变量,那么如何初始化呢?

1.static成员的所有者是类和对象,多个对象拥有一样的静态成员,从而在定义对象时不能通过构造函数对其进行初始化。

2.静态成员不能再类定义里面初始化,只能在class body外面初始化。

3.静态成员依旧遵循public、private、protected的访问准则。

4.静态成员函数没有this指针,它不能返回非静态成员,因为对象会调用,类本身也可以调用。

在VisibleRect.cpp中给予了初始化,

#include "VisibleRect.h"

USING_NS_Cc;

Rect VisibleRect::s_visibleRect;

void VisibleRect::lazyInit()
{

..................

OK,这个暂时结束。

大佬总结

以上是大佬教程为你收集整理的cocos2d-x-3.3rco版本<一>C++中类的静态的私有成员变量初始化问题全部内容,希望文章能够帮你解决cocos2d-x-3.3rco版本<一>C++中类的静态的私有成员变量初始化问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。