小编mag*_*nus的帖子

在函数的参数列表中初始化的变量的范围

以下代码构建,编译和运行(C++,mingw)似乎没有任何问题.但是,我保证在函数的参数列表中使用初始化列表构造的对象仍然存在于该函数的范围内,即使该函数通过引用获取参数?

如果不是,在函数的参数列表(通过引用接受参数)中使用其初始化列表创建对象时可能是危险的,因为它会立即被破坏:在这种情况下,函数没有复制,但是对内存的引用可能会或可能不会被另一个进程重新分配?

struct S
{
  S() : a(0), b(0) {}
  S(int a, int b) : a(a), b(b) {}
  int a;
  int b;
};

void foo(const S& s)
{
  std::cout << "s.a = " << s.a << std::endl;
  std::cout << "s.b = " << s.b << std::endl;
}

int main()
{
  foo({4,5}); // <-- What is the scope of the struct initialized here?

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ scope initializer-list

28
推荐指数
2
解决办法
2006
查看次数

我的Qt eventFilter()不会按预期停止事件

我的eventFilter出现了根本性的错误,因为它让一个事件都通过,而我想要阻止一切.我已经阅读了很多文档QEvent,eventFilter()等等,但显然我错过了很多东西.基本上,我正在尝试为我的弹出窗口类创建自己的模态功能QDialog.我想实现自己的,因为内置setModal(true)包含很多功能,例如播放QApplication::Beep(),我想排除.基本上,我想丢弃所有进入创建弹出窗口的QWidget(窗口)的事件.到目前为止我所拥有的是,

// popupdialog.h
#ifndef POPUPDIALOG_H
#define POPUPDIALOG_H

#include <QDialog>
#include <QString>

namespace Ui {class PopupDialog;}

class PopupDialog : public QDialog
{
   Q_OBJECT
public:
    explicit PopupDialog(QWidget *window=0, QString messageText="");
    ~PopupDialog();
private:
    Ui::PopupDialog *ui;
    QString messageText;
    QWidget window; // the window that caused/created the popup
    void mouseReleaseEvent(QMouseEvent*); // popup closes when clicked on
    bool eventFilter(QObject *, QEvent*);
};
Run Code Online (Sandbox Code Playgroud)

...

// popupdialog.cpp
#include "popupdialog.h"
#include "ui_popupdialog.h"

PopupDialog::PopupDialog(QWidget …
Run Code Online (Sandbox Code Playgroud)

c++ qt modal-dialog

7
推荐指数
2
解决办法
7812
查看次数

在 Docker-Compose 和 GitLab-CI 之间共享环境变量

注意:我省略了以下配置文件中的一些细节、阶段和设置,以使帖子更短,问题更“可读”。如果您认为缺少重要细节,请发表评论,我将(重新)添加它们。

现在,考虑一个 docker-compose 项目,由以下配置描述,

# docker-compose.yml
version: '3'

services:
    service_1:
        build: ./service_1
        image: localhost:8081/images/name_of_service_1
        container_name: name_of_service_1
    service_2:
        build: ./service_2
        image: localhost:8081/images/name_of_service_2
        container_name: name_of_service_2
Run Code Online (Sandbox Code Playgroud)

然后,在项目的 git 存储库中,我们有另一个文件,用于 GitLab 持续集成配置,

# .gitlab-ci.yml
image: docker:latest

stages:
    - build
    - release

Build:
    stage: build
    script:
        - docker-compose build
        - docker-compose push

# Release by re-tagging some specific (not all) images with version num
Release:
    stage: release
    script:
        - docker pull localhost:8081/images/name_of_service_1
        - docker tag localhost:8081/images/name_of_service_1 localhost:8081/images/name_of_service_1:rel-18.04
Run Code Online (Sandbox Code Playgroud)

现在,这一切都很好,但我发现我必须在两个文件中复制图像名称,这令人沮丧。这里的挑战(在我看来)是发布阶段不会发布构成部分的所有图像,因为有些是纯粹的模拟/虚拟图像,纯粹用于测试。因此,我需要单独标记/推送图像和容器。

我希望只能定义一次图像名称:我尝试引入该.env文件,该文件是由自动导入的docker-compose.yml …

environment-variables docker gitlab-ci docker-compose

5
推荐指数
1
解决办法
7003
查看次数

这个Perl语句是什么意思?

我正在尝试将Perl脚本解析为Python.我接下来没有Perl的经验,但它仍然非常顺利.Perl文档庞大而令人印象深刻.但是,有时会有一些非常神秘的语法,我真的无法弄清楚,而且我不能与脚本的作者沟通.以下让我头疼了很长一段时间了:

sub someSubroutine
{
    my ($var1, $var2, $var3) = @_;

    # some Perl code

    $var2 =~ s|/|\\|g;

    # and then some more code ..
}
Run Code Online (Sandbox Code Playgroud)

我真的没有得到这一个特别和孤独的路线

$dst =~ s|/|\\|g;
Run Code Online (Sandbox Code Playgroud)

我很清楚它$var2使用一些二进制OR操作进行搜索/字符串匹配,但结果未存储.

我想知道它是否有任何不那么明显的副作用,例如是否自动存储$_

根据我的阅读,默认变量是在调用子程序,启动循环或类似程序时自动设置的,但在使用运算符时没有任何内容.

我真的很感激任何帮助或指向适当的文档.

perl operators

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