小编spr*_*aff的帖子

如何将子类指针严格地等于父类指针?

我在两种智能指针之间编写了一个运算符==,并认为我应该进行快速的健全性检查.我对结果感到惊讶......

在下面的代码片段中,f和b的所有变体如何以相同的值结束?

struct Foo {
    int x;
};

struct Bar : public Foo {
    int y;
};

#include <iostream>

int main ()
{
    Bar bar;

    Foo * f = &bar;
    Bar * b = &bar;
    std :: cout << f << " " << b << " " << (f == b) << "\n";

    void * fv = f;
    void * bv = b;
    std :: cout << fv << " " << bv << " " << (fv == …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance pointers

6
推荐指数
1
解决办法
944
查看次数

为什么GLM构造函数都是显式的?

我已经开始在我的代码中使用GLM库.看起来很不错但我做不到这样的事情:

void foo (const glm :: vec3 & arg);

foo ({x, y, z});
Run Code Online (Sandbox Code Playgroud)

因为构造函数都是显式的.

这开始惹恼了我.我想不出有理由禁止隐含构造这种简单的值类型.作者是否盲目地遵循一些无关紧要的格言,或者他们知道我不知道的事情吗?

c++ glm-math

6
推荐指数
1
解决办法
2349
查看次数

如何在 Javascript DOM 更新后触发 CSS 布局重新计算?

我经常发现,如果我在 javascript 中创建或重新创建 DOM 节点,CSS 引擎不会重新计算父容器的大小。这发生在 Firefox 和 Chrome 中。

例如,body当新内容溢出底部时,可能会保持相同的大小。如果我调整窗口的大小,主体会增长,但它不会“锁定”到正确的大小,直到窗口的大小至少应有的一样大body

有没有办法在 Javascript 中触发完整的布局重新计算?

html javascript css

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

我不能再将char [M] [N]类型分配到gcc 4.9上的std :: vector中

我使用gcc 4.8直到我升级Ubuntu,现在我有gcc-4.9.1-16.用于编译而没有警告并且运行正常的代码现在不再编译.

static const unsigned WIDTH = 16;
static const unsigned VSCALE = 1;
static const unsigned HEIGHT = WIDTH / VSCALE;
static const unsigned FOOTER = 2;

typedef char Row [WIDTH + 1];
typedef Row World [HEIGHT - FOOTER];

std :: vector <World> m_levels;

World levels [] =
{
    {
        "                ",
        "                ",
        "                ",
        "                ",
        "                ",
        "  ###      ###  ",
        "                ",
        "1122112211221122",
        " 33003300330033 ",
        "1122112211221122",
        " 33003300330033 ",
        "                ",
        "                ",
        " …
Run Code Online (Sandbox Code Playgroud)

c++ gcc c++11

6
推荐指数
1
解决办法
462
查看次数

如何在Ubuntu上安装QtWebEngine

当QML程序(例如,在这种情况下从PPA安装的以太坊)尝试

import QtWebEngine 1.0
import QtWebEngine.experimental 1.0
Run Code Online (Sandbox Code Playgroud)

然后我得到这些错误

file:////usr/share/mist/qml/views/browser.qml:5 module "QtWebEngine" is not installed
file:////usr/share/mist/qml/views/browser.qml:6 module "QtWebEngine.experimental" is not installed
Run Code Online (Sandbox Code Playgroud)

QtWebEngine在Qt 5.4中,这是我安装的

#> qmake --version
QMake version 3.0
Using Qt version 5.4.0 in /usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud)

我试着自己建立QtWebEngine,但没有快乐:

#> git clone git@gitorious.org:qt-labs/qtwebengine.git
Cloning into 'qtwebengine'...
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)

1)如果是使用Qt 5.4,它为什么没有QtWebEngine安装安装?

2)除了自己构建之外,有没有办法安装它?

3)git clone命令有什么问题? …

git ubuntu qt qml qtwebengine

6
推荐指数
1
解决办法
5389
查看次数

我应该如何为小于标准的std :: mersenne_twister_engine选择参数?

我需要一个"足够好"的C++ 11随机数生成器,我可以保存并恢复状态.我希望保存的状态明显小于此代码生成的6.6kb左右

std::mt19937 rng (1);
std::ofstream save ("save.txt");
save << rng;
Run Code Online (Sandbox Code Playgroud)

std :: mersenne_twister_engine有大量参数.这有点吓人.

就我的目的而言,大约数十亿的时期就足够了.我听说过TinyMT,这可能是合适的,但却看不出如何将它作为模板专业化来实现.

我该如何选择参数?如果我只是将"状态大小"参数减少到几个单词,我怀疑它会破坏.

我会考虑完全使用不同的引擎,但除了容忍适度的时期外,我不想牺牲统计随机性的质量.诸如以下的伪像(对于线性同余)是不可接受的.

在此输入图像描述

c++ random stl mersenne-twister c++11

6
推荐指数
1
解决办法
171
查看次数

如何将键盘光标/焦点移动到 QLineEdit?

我正在打开一个包含 QLineEdit 的 QDialog。我希望 QLineEdit 最初具有键盘焦点,闪烁的光标作为视觉提示。很简单吧?

调用line_edit->setFocus()没有效果。

调用line_edit->grabKeyboard()给它输入焦点但是

  • 闪烁的插入符号不会移动到 line_edit
  • 如果我点击不同的 QLineEdit,闪烁的插入符号会出现那里,但按键仍会传送到line_edit

如果我两者都不做,我必须点击进入line_edit以获得插入符号和输入焦点。查看源代码QLineEdit::mousePressEvent似乎关键功能是QWidgetLineControl::moveCursor,但无法通过公共 API 访问它,并且进一步查看源代码并没有显示出任何有希望的东西。

那么我该如何移动该死的键盘输入光标呢?

qt

6
推荐指数
1
解决办法
5867
查看次数

如何在不每次都通过浏览器获取新的身份验证代码的情况下使用Python Google API?

我正在使用Google API。我以此为起点,这里是实际的Python代码。

我已经在https://console.developers.google.com/apis/credentials创建了OAuth 2.0客户端ID,并client_secret.json按照以下代码中的方式下载了它:

CLIENT_SECRETS_FILE = "client_secret.json"

def get_authenticated_service():
  flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES)
  credentials = flow.run_console()
  return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)
Run Code Online (Sandbox Code Playgroud)

内容client_secret.json如下:

{
  "installed": {
    "client_id": "**REDACTED**",
    "project_id": "api-project-1014650230452",
    "auth_uri": "https:\/\/accounts.google.com\/o\/oauth2\/auth",
    "token_uri": "https:\/\/accounts.google.com\/o\/oauth2\/token",
    "auth_provider_x509_cert_url": "https:\/\/www.googleapis.com\/oauth2\/v1\/certs",
    "client_secret": "**REDACTED**",
    "redirect_uris": [
      "urn:ietf:wg:oauth:2.0:oob",
      "http:\/\/localhost"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

整个程序可以正常工作并成功返回有意义的数据集,但是,每次运行该程序时,都会提示我如下:

Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=...
Enter the authorization code:
Run Code Online (Sandbox Code Playgroud)

我输入了代码,程序运行了,但是每次程序运行时,我都必须访问此URL并获取新的代码。我给人的印象client_secret.json恰恰是为了防止这种情况的发生。

如何使我的CLI Python程序使用API​​,而不必每次都获得一个新的令牌?

google-api

6
推荐指数
1
解决办法
974
查看次数

哪些 gnu 属性具有 c++11 语法?

C++11 属性说明符序列的文档包括 GNU 命名空间属性的示例,例如

[[gnu::always_inline]] [[gnu::hot]] [[gnu::const]] [[nodiscard]]
inline int f(); // declare f with four attributes
Run Code Online (Sandbox Code Playgroud)

C++11 之前的属性的GCC 文档使用不同的语法

__attribute__(( ... ))
Run Code Online (Sandbox Code Playgroud)

我找不到关于哪些 GNU 属性使用新[[gnu:foo]]语法或有什么区别的文档。

这方面的权威文档在哪里?

c++ gcc gnu c++11

6
推荐指数
1
解决办法
584
查看次数

spring-boot-devtools 自动重启不起作用

我有一个使用 mvn 构建的有效 Spring Boot 2.25 应用程序。根据此文档,我添加

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

从文档:

由于 DevTools 监控类路径资源,触发重启的唯一方法是更新类路径。更新类路径的方式取决于您使用的 IDE。在 Eclipse 中,保存修改后的文件会导致更新类路径并触发重新启动。在 IntelliJ IDEA 中,构建项目(Build -> Build Project)具有相同的效果。

随着应用程序的运行,我尝试了一个简单的

touch /path/to/app.jar
Run Code Online (Sandbox Code Playgroud)

期待应用程序重新启动,但什么也没发生。

好吧,也许它正在做一些更聪明的事情。我修改了一些源 .java,重新编译了 .jar,然后用cp它来替换正在运行的 .jar 文件,然后……什么也没发生。

也来自文档

DevTools 依靠应用程序上下文的关闭挂钩在重新启动期间关闭它。如果您禁用了关闭钩子 (SpringApplication.setRegisterShutdownHook(false)),它就不能正常工作。

我不是在做这个。

DevTools 需要自定义ApplicationContext 使用的ResourceLoader。如果您的应用程序已经提供了一个,它将被包装。不支持直接覆盖 ApplicationContext 上的 getResource 方法。

我不是在做这个。

如果这很重要,我正在 Docker 容器中运行它。从文档:

运行完全打包的应用程序时,开发人员工具会自动禁用。如果您的应用程序是从 java -jar 启动的,或者是从特殊的类加载器启动的,则它被视为“生产应用程序”。如果这不适用于您(即,如果您从容器运行您的应用程序),请考虑排除 devtools 或设置 -Dspring.devtools.restart.enabled=false 系统属性。

我不明白这意味着什么,或者它是否相关。

我想重新编译一个 .jar 并在正在运行的 docker 容器中替换它,并在不重新启动容器的情况下触发和应用程序重新启动。我怎样才能做到这一点?

编辑:我正在使用mvn重建 jar,然后docker cp在正在运行的容器中替换它。(IntelliJ IDEA 声称要重建项目,但实际上并未 …

java docker spring-boot spring-boot-devtools

6
推荐指数
2
解决办法
729
查看次数