小编kla*_*aus的帖子

使用命名空间 std 导致 boost 指针转换触发 C++17 标准中的 ADL

我有一个带有继承和shared_ptr来自 boost 库的简单代码。使用标准 c++20,代码可以正常编译。函数调用static_pointer_castdynamic_pointer_cast编译无需预先boost::命名空间——这些函数调用之所以有效,是因为 ADL(参数相关查找)。

但对于标准 c++17,代码将无法编译。我认为 ADL 没有实现,或者实现方式不同。但是,如果我添加using namespace std,代码就可以正常编译。我的问题是:与库的函数调用std有什么关系?boost

这是在线编译器,因此您可以通过注释行中和注释行来进行操作using namespace std;: https: //godbolt.org/z/cz8Md5Ezf

#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>

// using namespace std;

class Animal {
public:
  Animal()
  {}
  virtual ~Animal()
  {}
  void speak()
  {
    std::cout << "I am an animal\n";
  }
};

class Dog : public Animal {
public:
  Dog()
  {}
  void bark()
  {
    std::cout << "Gheu --> ";
  }
  void …
Run Code Online (Sandbox Code Playgroud)

c++ boost argument-dependent-lookup c++17 c++20

20
推荐指数
1
解决办法
996
查看次数

在SDL2中,如何在不使用surface的情况下找出文本的宽度和高度?

我想创建一个单独的函数,我可以在其中发送一个字符串,它会适当地呈现文本,这样我就不需要复制粘贴相同的内容。我想出的功能如下。

void renderText(SDL_Renderer* renderer, char* text,
                char* font_name, int font_size,
                SDL_Color color, SDL_Rect text_area)
{
    /* If TTF was not initialized initialize it */
    if (!TTF_WasInit()) {
        if (TTF_Init() < 0) {
            printf("Error initializing TTF: %s\n", SDL_GetError());
            return EXIT_FAILURE;
        }
    }

    TTF_Font* font = TTF_OpenFont(font_name, font_size);
    if (font == NULL) {
        printf("Error opening font: %s\n", SDL_GetError());
        return;
    }

    SDL_Surface* surface = TTF_RenderText_Blended(font, text, color);
    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface);
    if (!texture) {
        printf("error creating texture: %s\n", SDL_GetError());
        TTF_CloseFont(font);
        return;
    } …
Run Code Online (Sandbox Code Playgroud)

sdl-ttf sdl-2

7
推荐指数
1
解决办法
4860
查看次数

如何从 gcc 和 g++ 获取错误和警告的计数?

我已经通过脱脂$ man gcc$ man g++,但还没有发现的东西,将打印错误和警告计数。但是我看到 Emacs 可以在缓冲区中打印错误计数警告计数*compilation*。因此,必须有一个选项,gccg++我失踪,因为我不认为Emacs的本身将执行错误计数,这只是太多的工作。

如何从 gcc 和 g++ 获取错误和警告的计数?

emacs gcc compiler-errors g++

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

git合并后将分支的提交历史记录保留在git日志图中

测试用例:

                 A---B---C topic
                /
           D---E master
Run Code Online (Sandbox Code Playgroud)

如果我做

git checkout master
git merge topic
Run Code Online (Sandbox Code Playgroud)

我去拿


               D---E---A---B---C master,topic
Run Code Online (Sandbox Code Playgroud)

我如何合并,以便提交图保持如下所示

                     A---B---C topic
                    /         \
               D---E-----------F master
Run Code Online (Sandbox Code Playgroud)

git merge git-merge

4
推荐指数
1
解决办法
70
查看次数

将 ggplot2 与 ks 包的 kde 图结合使用

我正在使用ks来计算和绘制二元核密度估计。它效果很好,但我想使用 ggplot 来绘制估计值。

我可以尝试创建一个自定义函数来为 ggplot 准备数据框和其他内容,但我感觉更有经验的 R 用户可以更轻松地做到这一点。

那么,我该怎么做呢?

以下是 ks::kde 的示例场景:

data <- cbind(rnorm(100), rnorm(100))
kd <- ks::kde(data)
plot(kd, display = "slice", col = viridis::viridis(20))
plot(kd, display = "image", col = viridis::viridis(20))
plot(kd, display = "persp", col.fun = viridis::viridis)
Run Code Online (Sandbox Code Playgroud)

上面的代码应该给你以下的图。如何使用 ggplot 来绘制这些图?

编辑:我需要使用ks按包计算的估计值。提供的本机函数ggplot2使用名为 的包MASS。所以这样不行。

切片图 图像图 透视图

r ggplot2 kernel-density

0
推荐指数
1
解决办法
827
查看次数