小编Kai*_*zay的帖子

如何确保类的每个方法首先调用其他方法?

我有 :

class Foo {
   public:
      void log() { }

      void a() {
         log();
      }

      void b() {
         log();
      }
};
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以让每个方法Foo调用log(),但是我没有必须显式地键入log()作为每个函数的第一行?我想这样做,这样我就可以为每个函数添加行为,而无需通过每个函数并确保调用,以及当我添加新函数时,代码会自动添加...

这甚至可能吗?我无法想象如何用宏来做这个,所以不知道从哪里开始...到目前为止,我想到的唯一方法是添加一个"预构建步骤",以便在编译之前我扫描文件并编辑源代码,但这似乎不是很聪明....

编辑:只是为了澄清 - 我不希望log()明显地调用自己.它不需要成为课程的一部分.

编辑:我更喜欢使用跨平台工作的方法,并只使用stl.

c++ c++11

74
推荐指数
6
解决办法
6007
查看次数

将您的favicon.ico文件放在非根路径中是一个坏主意吗?

浏览器何时以及如何请求favicon.ico文件?他们是否总是在root中检查它,或者他们是否首先阅读网页的内容以查看页面是否指定了位置?

我在/ images中有我的favicon.ico路径我的每个页面都有以下标记:

<link rel="shortcut icon" href="images/favicon.ico">
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中加载页面时,它似乎工作(我可以看到该文件),但我不知道他们是否首先向我的根文件夹发出错误请求(文件不存在),并且后来向链接发出请求.

我希望通过浏览器对我的网站进行不正确的调用来最小化404和浪费的带宽.

编辑:我正在寻找有关浏览器如何工作的一些见解,并请求此文件,因此我的网站结构是有效的.

html browser http cross-browser

65
推荐指数
1
解决办法
3万
查看次数

如何请求node.js中的垃圾收集器运行?

在启动时,似乎我的node.js应用程序使用大约200MB的内存.如果我暂时不管它,它会缩小到9MB左右.

是否可以从应用程序内:

  1. 检查应用程序使用的内存量?
  2. 请求垃圾收集器运行?

我问的原因是,我从磁盘加载了一些临时处理的文件.这可能会导致内存使用量激增.但是我不希望在GC运行之前加载更多文件,否则存在内存不足的风险.

有什么建议 ?

javascript garbage-collection node.js

57
推荐指数
3
解决办法
3万
查看次数

当我们需要存储"最后n个项目"时,列表是否比矢量更好?

有很多问题表明应该总是使用向量,但在我看来,列表对于场景更好,我们需要存储"最后n个项目"

例如,假设我们需要存储最后看到的5个项目:迭代0:

3,24,51,62,37,
Run Code Online (Sandbox Code Playgroud)

然后在每次迭代时,删除索引0处的项目,并在末尾添加新项目:

迭代1:

24,51,62,37,8
Run Code Online (Sandbox Code Playgroud)

迭代2:

51,62,37,8,12
Run Code Online (Sandbox Code Playgroud)

似乎对于这个用例,对于向量,复杂度将是O(n),因为我们必须复制n个项目,但是在列表中,它应该是O(1),因为我们总是只是砍掉了头部,并在每次迭代时添加到尾部.

我的理解是否正确?这是std :: list的实际行为吗?

c++ buffering fifo data-stream c++11

43
推荐指数
4
解决办法
4899
查看次数

如何通过仅使用快捷键在调试或释放模式下切换运行Xcode项目?

默认情况下,要在发布模式下"运行"我的项目,我需要编辑方案的运行设置以使用"release"而不是debug.

为了不必在每次我想在调试和发布模式之间切换时编辑方案,我创建了一个在发布中运行的新方案.但这仍然是乏味的,因为如果我想切换,我需要点击相关的方案.

有没有一种方法可以使用快捷键在调试/释放模式下自动(构建+运行)?

我不想描述!因为它发射仪器等

编辑:要清楚 - 我总是在设备上运行.

xcode

40
推荐指数
4
解决办法
4万
查看次数

为什么创建静态const std :: string会导致异常?

我有字符串常量,我在我的应用程序中的多个位置使用的字符串:

namespace Common{
    static const std::string mystring = "IamAwesum";
}
Run Code Online (Sandbox Code Playgroud)

当发布关于其他内容的问题时(编译期间未包含在目标中的.h文件会发生什么?),另一位用户发表了以下评论:

请注意,在这种情况下,您的静态字符串是全局的.所以他们可以在任何时候创建一个例外,并且无法捕获.我建议你使用返回字符串引用的函数.std :: string const&mystring {static std :: string const mystring ="IamAwesum"; 通过这种方式返回mystring}你的对象只在需要时构造

有人可以解释为什么以我上面这样的方式使用静态const字符串,冒着抛出异常的风险吗?

c++ static constant-expression

25
推荐指数
2
解决办法
3258
查看次数

是不是可以用swift使用"Analyze"?

以前使用objective-c代码,我可以"分析" - CMD + Shift + B和Xcode会警告我各种各样的错误行为.

看来用Swift,我没有错!没有任何警告!但很明显我的代码中存在内存泄漏.

是否有一些设置我必须启用Swift来正确分析我的代码?(我知道我应该使用探查器并在实际设备上进行测试,但是我想知道为什么"分析"没有做任何事情.

xcode swift xcode6

21
推荐指数
2
解决办法
5986
查看次数

如何确保方法只在该对象的生命周期内执行一次?

class MyObj{
public:
    void myFunc(){
         //ToBeExecutedJustOnce
    }

};
Run Code Online (Sandbox Code Playgroud)

我有一个函数,我想在生命周期中只执行一次MyObj.可能有许多实例MyObj,并且每个实例应该能够执行一次该功能.所以,如果我有:

MyObj first;
MyObj second;
MyObj third:
first.myFunc(); // Should execute
second.myFunc(); // Should execute
third.myFunc(); // Should execute
first.myFunc(); // Should not execute
second.myFunc(); // Should not execute
third.myFunc(); // Should not execute
Run Code Online (Sandbox Code Playgroud)

选项:

  1. 成员变量:如果我使用成员变量,那么其中的其他函数MyObj可以访问它并更改它.
  2. 全局静态变量:无法工作,因为第一个,第二个和第三个都将检查相同的变量.
  3. local static:与#2相同的问题.

我找到的唯一解决方案是MyObj从另一个类继承

MyOtherObj{
private:
    bool _isInit = false;
public:
    bool isInit(){
          bool ret = true;
          if (!_isInit){
              ret = false;
              _isInit = true;
          }
          return ret; …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

20
推荐指数
3
解决办法
4917
查看次数

当我调用setFlipped(true)时,为什么动画不会水平翻转?

我有一些精灵,玩家角色面向右边.我可以从那些精灵中创建一个动画就好了.问题是,如果我想让精灵面向左边.

我做以下事情:

Sprite* p = Sprite::createWithSpriteFrameName("Jumping");
p->setPosition(Vec2(_visibleSize.width/2,_visibleSize.height/2));
this->addChild(p);
p->setFlippedX(true);
Vector<AnimationFrame*> animFrames;
float frameRate = 0.32f;
std::vector<std::string> frameNames = {"Running 0","Running 1","Running 2"};

for (int i =0; i<3;i++){
    auto frameName = frameNames.at(i);
    auto spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(frameName);
    ValueMap userInfo;
    userInfo["frame_index"] = Value(i);
    auto animFrame = AnimationFrame::create(spriteFrame, frameRate, userInfo);
    animFrames.pushBack(animFrame);
}

auto animation = Animation::create(animFrames, frameRate);
auto animationAction = Animate::create(animation);
p->runAction(RepeatForever::create(animationAction));
p->setFlippedX(true);
Run Code Online (Sandbox Code Playgroud)

动画运行,但动画仍显示面向右侧的玩家.问题是什么?为什么setFlippedX在这种情况下不起作用?

我正在使用Cocos2d-x 3.13.1.我找不到任何错误,所以我认为我做错了什么.

cocos2d-x cocos2d-x-3.0 cocos2d-x-3.x

18
推荐指数
1
解决办法
2万
查看次数

"您输入的应用程序名称已被使用",即使我刚刚创建了应用程序

我正在尝试在iTunes Connect上创建我的应用程序,因此我可以添加我的游戏中心功能.当我到达我填写默认语言,应用程序名称,sku编号和包ID的屏幕时,我收到一条错误消息:

The App Name you entered has already been used.
Run Code Online (Sandbox Code Playgroud)

这是否意味着其他人使用过此应用ID?我无法在iTunes Store的任何地方找到具有此名称的应用程序.

我刚开始在iTunes Connect上创建应用程序,所以我绝对没有使用它.

有没有办法验证这不是一个错误,而其他人选择了这个名字?

itunesconnect app-store gamekit game-center

17
推荐指数
3
解决办法
2万
查看次数