问题列表 - 第290676页

类模板中嵌套类的 C++ 友元函数

我遇到以下问题。下面的代码在 gdb 在线上运行良好,但是在本地编译如下:

/.../g++ -std=c++17 -g -O3
/.../Test.cpp -o
/.../Test

产生:

错误: “privateMember”是“ ”
的私有成员Foo<int>::Nested

我还尝试了 VS2019 - 与 g++ 相同的效果(这实际上是一个 clang: Apple clang version 11.0.0 (clang-1100.0.33.8))。

解决此问题的方法是:更改调用(注释“//2”)

make(...) -> make<int>(...)
Run Code Online (Sandbox Code Playgroud)

或者

删除带有注释“//1”的行。

这些修复是相互独立的——只需要应用一个

template <typename T>
class Foo;

template <typename T>
typename Foo<T>::Nested make(T&& t);

template <typename T>
class Foo
{
public:
    class Nested
    {
        int privateMember{5};
        friend Nested make<T>(T&& e);
    };

    Nested k; //1
};

template <typename T>
typename Foo<T>::Nested make(T&& t)
{ …
Run Code Online (Sandbox Code Playgroud)

c++ templates inner-classes friend-function

6
推荐指数
0
解决办法
379
查看次数

如何使用OpenCV对图像中的像素组进行分组和突出显示?

在对图像进行错误级别分析的过程中,我想使用OpenCV(仅显示单个图像而不显示差异)来突出显示像素变化。我知道输出图像的像素级值,但不确定将它们分组在一起并为其指定形状的方法(下面的示例使用形状指定像素变化)。我想知道是否可以检测到像素较浅的圆圈并将其分组并为像素添加分组形状

输入图片:

在此处输入图片说明

结果图像:

在此处输入图片说明

python opencv image image-processing image-segmentation

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

为什么在Perl中使用&getcwd()而不是getcwd()?

我是Perl语言的新手,在我使用的代码中有以下一行:

$BASEDIR = &getcwd();
Run Code Online (Sandbox Code Playgroud)

我想知道为什么&对的调用前面有一个getcwd,而我找不到关于它的任何参考。有人可以帮我吗?

非常感谢 !

perl

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

如何在javascript中每5个字后将&lt;br&gt;标记放在长字符串中

例:

str = "Hello this is a test string to figure out how is it possible to split a long string into multiple string";
Run Code Online (Sandbox Code Playgroud)

我想<br>在每5个字后加上标签

输出:

str1 = "Hello this is a test<br>string to figure out how<br>is it possible to split<br>a long string into multiple<br>string";
Run Code Online (Sandbox Code Playgroud)

如果有办法的话,请帮我。谢谢...

javascript

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

为什么我的 React 应用程序在状态更改后完全重新加载?

我对 React 还很陌生,所以如果这是一个愚蠢的问题,我深表歉意,我怀疑这是一个愚蠢的问题。

我有一个简单的 React 应用程序,带有下拉菜单、按钮和列表。单击该按钮时,下拉列表中选定的项目将添加到列表中。添加到列表中的每个项目还有一个与其关联的删除按钮。

我需要 SelectComponent(下拉菜单和按钮)和 ListComponent(列表和按钮)来了解列表中的项目是什么,以便他们可以从中添加/删除项目,因此我将状态存储在父 App 组件中并将其传递下来作为 props 给子级,以及可以更新它的回调函数(使用setState())。这是我所拥有的:

选择组件

class SelectComponent extends Component<SelectProps, {}> {
  constructor(props: any) {
    super(props);
    this.changeHandler = this.changeHandler.bind(this);
    this.clickHandler = this.clickHandler.bind(this);
  }

  changeHandler(event: ChangeEvent<HTMLSelectElement>) {
    currentSelection = event.target.value;
  }

  clickHandler(event: MouseEvent<HTMLButtonElement>) {
    this.props.selectedItems.push(currentSelection);
    this.props.updateList(this.props.selectedItems);
  }

  render() {
    let optionItems = this.props.options.map((optionItem, index) =>
        <option>{optionItem}</option>
      );

    return (
      <form>
        <div>
          <select onChange={this.changeHandler}>
            <option selected disabled hidden></option>
            {optionItems}
          </select>
          <br />
          <button type="submit" onClick={this.clickHandler}>Add to list</button>
        </div>
      </form>
    );
  }
} …
Run Code Online (Sandbox Code Playgroud)

html javascript typescript reactjs

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

C ++模板:检查类型的析构函数是否可以被“忽略”

首先,让我使这个问题更具体。

通过说

检查类型的析构函数是否可以被“忽略”

我意思是

检查类在实例消失时是否没有副作用。

我在做什么:

我正在为我们的C ++项目编写垃圾收集库,我需要提高性能。如果我可以检测到传入类型T在销毁时没有副作用,那么我可以检查所有活动对象,其余所有都是垃圾,可以标记为“垃圾”(典型的年轻一代收集技术)。但是,如果它有副作用,我必须扫描每个濒死的对象并运行它的析构函数。

例如:

struct S1 {
  int i;
}; // can be ignored

struct S2 {
  int i;
  ~S2() {

  }
}; // can be ignored

struct S3 {
  S3() {
    std::cout << "S3()" << std::endl;
  }
  virtual ~S3() {
    std::cout << "~S3()" << std::endl;
  }
}; // can not be ignored, destructor has side effect

struct S4 {
  S3 s3;
}; // can not be ignored, destructor has side effect(calling s3's …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

使 Jackson 序列化程序覆盖特定的忽略字段

我有杰克逊这样的注释类:

public class MyClass {
   String field1;

   @JsonIgnore
   String field2;

   String field3;

   @JsonIgnore
   String field4;
}
Run Code Online (Sandbox Code Playgroud)

假设我无法更改 MyClass 代码。那么,如何让 ObjectMapper 仅覆盖 field2 的 JsonIgnore 并将其序列化为 json ?不过,我希望它忽略 field4。这是简单的几行代码吗?

我的常规序列化代码:

public String toJson(SomeObject obj){
    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    String json = null;
    try {
        json = ow.writeValueAsString(obj);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
    return json;
}
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

如何使用 vscode api 编写异步代码(承诺?):withProgress

我对标题感到非常抱歉,我不知道如何更好地描述我的问题。

我想实现 VSCode 的 withProgress API,以便能够在我的代码运行/进行时显示进度条。文档在这里:https : //code.visualstudio.com/api/extension-capabilities/common-capabilities#progress-api

我试图实现它:

vscode.window.withProgress({
    location: vscode.ProgressLocation.Notification,
    title: "I am long running!",
}, (progress, token) => {
    return new Promise(resolve => {
        const output = executeProcess('sleep 5');
        resolve();
    });
});
Run Code Online (Sandbox Code Playgroud)

executeProcess(...) 是 npm child_process.spawnSync 的包装器。我需要它是同步的,因为我想阅读它的标准输出。

所以,我的问题是它当前正在运行 executeProcess,当它完成时,它开始显示进度条。我怎么能写成它首先开始显示进度条的方式,同时它正在运行并在后台完成它的工作?

是否有可能不需要重构我的代码来使用 child_process.spawn 和回调?

typescript visual-studio-code vscode-extensions

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

Git:如何变基到过去的特定提交?

我想变基到一个特定的提交,该提交不是另一个分支的 HEAD,而是向后移动:

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

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

我如何以优雅且通用的方式实现这一目标?

一般来说,我的意思是目标提交(B)不一定是 HEAD 的直接祖先(我也可能变基到 A 或先前的提交),并且主题分支上可能不止两个提交。我可能还想从 B 变基到 A。

git version-control git-rebase

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

ASP.NET Core UserManager 中的取消

我目前正在实现一些基于Asp.Net Core Identity的UserManger的设计的服务。在实现中,我想知道如果无法将取消令牌传递到 UserManager 的方法中,usermanager 如何支持取消。

我还看到 usermanager 内部有一个取消令牌属性(具有默认值),该属性在内部使用,并将传递给使用的异步方法。但由于其保护级别,该属性无法访问

protected virtual CancellationToken CancellationToken => CancellationToken.None;
Run Code Online (Sandbox Code Playgroud)

如何将我在控制器中使用的取消令牌(例如)传递到用户管理器中?我是否必须重载它并通过新方法将其传递给它?

public class MyUserManager : UserManager<MyUser>
{
    /* ... Other stuff... */

    protected override CancellationToken CancellationToken  {get;set;}

    public void SetCancellationToken(CancellationToken cancellationToken)
    {
         this.CancellationToken = cancellationToken;
    }

}
Run Code Online (Sandbox Code Playgroud)

这是使用 userManager 完成取消的正确方法吗?如果是:为什么这与使用取消令牌的其他组件不同,例如 EF Core,您必须通过方法参数传递 CancellationToken?

cancellation cancellation-token asp.net-core asp.net-core-3.0

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