问题列表 - 第318029页

为什么 C++ RTTI 不能按我的预期工作?

注意:MRE 示例太大,无法在此处发布(!),因此我将其存储在我的谷歌驱动器上,这里是一个链接 - https://drive.google.com/uc?id=1BUDD2DhumdY2eVwO5BffyaQfjVIdABb3&export=download

我需要调整使用 Xerces(1.6)/Xalan(1.3) 的非常旧的库以使用新的 Xerces(3.2.5)/Xalan(1.12)。原因很简单,因为使用现代 Microsoft C++ 编译器和 STL 几乎不可能构建此代码。

为了保持接口兼容,我必须对一些 Xerces/Xalan 对象使用包装类。包装器将 Xerces/Xalan 对象存储为void*指针。我想使用 RTTI 添加类型转换验证。但出了点问题...

这是强制转换验证函数的代码:

template<class T>
T* castAndCheck(const XmlLibObjectWrapper* pObjWrap)
{
  T* result = (T*)(pObjWrap->EngineObj);

#ifdef _CPPRTTI
  const type_info& ti = typeid(*result);
  const type_info& tiExpected = typeid(T);

  if (ti != tiExpected)
  {
    // I want it throw bad_cast here BUT IT DOES NOT!...
    //T& resultSpecific = dynamic_cast<T&>(*result); //<- this has the same problem
    T* resultSpecific = dynamic_cast<T*>(result);

    if (resultSpecific == …
Run Code Online (Sandbox Code Playgroud)

c++

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

Hibernate Envers 6.4.1:静态元模型字段注入的非法参数

我迁移到 Hibernate 6.4.1(通过 Spring Boot 3.2.1),我的应用程序记录了一个以前不存在的错误:

2024-01-03T15:49:10.361+01:00 ERROR 81857 --- [           main] 
o.h.metamodel.internal.MetadataContext   : 
HHH015007: Illegal argument on static metamodel field injection : 
org.hibernate.envers.DefaultRevisionEntity_#class_; expected type :  
org.hibernate.metamodel.model.domain.internal.EntityTypeImpl; encountered type : 
jakarta.persistence.metamodel.MappedSuperclassType

Run Code Online (Sandbox Code Playgroud)

我可以通过从 spring data envers 文档中复制代码来用一个最小的示例来重现此内容: https ://docs.spring.io/spring-data/jpa/reference/envers/configuration.html

我还可以通过运行 spring-data-envers 示例来重现这一点: https://github.com/spring-projects/spring-data-examples/blob/main/jpa/envers/pom.xml

我还可以通过运行https://github.com/hibernate/hibernate-orm/blob/main/hibernate-envers/src/test/java/org/hibernate/orm/test/envers/DefaultAuditTest.java来重现此内容

创建问题https://hibernate.atlassian.net/jira/software/c/projects/HHH/boards/31?selectedIssue=HHH-17612

hibernate-envers spring-data-envers

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

为什么 Rust 的 std::iter::zip 似乎具有内部可变性?

据我了解,我不应该能够对不可变的数据进行可变引用。因此,如果我想创建一些基于改变内部状态struct的实现Iterator,那么我必须将其任何实例声明struct为可变的,以便能够创建所需的可变引用。

为了进行演示,我构建了一个简单的示例,如下所示:

struct MyIter {
    internal_state: u32
}

impl MyIter {
    fn new() -> MyIter {
        MyIter{ internal_state: 0 }
    }
}

impl Iterator for MyIter {
    type Item = u32;
    fn next(&mut self) -> Option<u32> {
        self.internal_state += 1;
        Some(self.internal_state)
    }
}

#[cfg(test)]
mod tests {
    use super::*;
    use std::iter::zip;

    #[test]
    fn mutable_declaration_no_zip() {
        let mut my_iter = MyIter::new();
        assert_eq!(my_iter.next(), Some(1));
        assert_eq!(my_iter.next(), Some(2));
        assert_eq!(my_iter.next(), Some(3));
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以正常编译并通过,而如果我将测试函数更改为具有不可变的声明my_iter,如下所示,则它拒绝使用预期消息进行编译error[E0596]: cannot borrow …

rust

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

Delphi 11 IDE 可以在 HTML 或 RichText 模式下工作吗?

如果程序员能够以HTMLorRichText格式编写代码,例如变量可以具有index in subscript formator 可以是underline代码的一部分,或者可以different color在代码的一部分中使用 a 等,那就太好了。

Delphi IDE有这个功能吗?

如果是这样,有人可以向我解释是否以及如何HTML选择并HTML formatting做我想做的事吗?

delphi delphi-11-alexandria

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

如何将世界地图和饼图合并在一起?

我有两个包含三个变量的数据集。我想在世界地图上将其中一个显示为热图,两个显示为饼图。

我使用了下面的代码,但出现了错误。我想知道如何解决它。

library(ggplot2)
library(scatterpie)

world_map <- map_data("world")
df <- data.frame(Country = c("USA", "Canada", "Mexico"),
                          Cases = c(10, 20, 30))
df_piechart <- data.frame(long = c(-95, -110, -75),
                                   lat = c(37, 60, 20),
                                   size = c(5, 10, 15),
                                   Group1 = c(20, 30, 50),
                                   Group2 = c(30, 40, 30))

ggplot() +
 geom_map(dat = world_map, map = world_map, aes(map_id = region), color = "white", fill = "#d3d4d3", linewidth = 0.5, alpha=0.4 ) +
 geom_map(dat = df, map = world_map, aes(map_id = Country, fill = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 scatterpie geom-map

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

使用 C++20 &lt;chrono&gt; 计算基于 ISO 周的日期

我知道我可以使用基于 ISO 周的日历(%G、%V和%u)来格式化计时日期,但我如何使用 自己计算这些值<chrono>?

c++ c++-chrono c++20

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

如何防止短 lambda 被分成两行?

我有一个关于 C++ lambda 的 clang 格式问题。升级到 Clang-Format 15.0.1 后,我注意到短的但不是在线 lambda 的新行为。下面我将它们称为“双行 lambda”。例子:

单行 lambda

// good/unchanged
auto shortLambda= []() { doSomething(); };
Run Code Online (Sandbox Code Playgroud)

两行 lambda:

// unwanted/new behavior
const auto mediumLambda = [some, args, here](More arguments)
{ return doSomething(some, args, here, arguments); };
Run Code Online (Sandbox Code Playgroud)

多线 Lambda:

// good/unchanged
const auto longLambda= [some, args, here](Are here)
{
   auto result =doSomething(some, args, here, arguments); 
   return result;
};
Run Code Online (Sandbox Code Playgroud)

两行 lambda 的期望行为:

// desired
const auto mediumLambda = [some, args, here](More arguments)
{
   return doSomething(some, args, …
Run Code Online (Sandbox Code Playgroud)

c++ lambda clang-format

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

对多个不整齐的列使用pivot_longer

我有这些(杂乱的)数据,其中包含每个患者的药物治疗阶段(ip 或 cp)、药物名称(编码为数字)以及多种药物的剂量信息:

df_have

#   id ip_drug1 ip_dose1 ip_drug2 ip_dose2 cp_drug1 cp_dose1 cp_drug2 cp_dose2
# 1 A1        1      300        3      100        6      500        7      100
# 2 A2        1      300        2      200       11      300       NA       NA
# 3 A3        1      500       NA       NA        9      100        5     1500
Run Code Online (Sandbox Code Playgroud)

我想让这些数据整洁并采用长格式:

df_want

#    id phase drug dose
# 1  A1    ip    1  300
# 2  A1    ip    3  100
# 3  A1    cp    6  500
# 4  A1    cp    7  100
# 5 …
Run Code Online (Sandbox Code Playgroud)

r tidyr

4
推荐指数
2
解决办法
119
查看次数

右值 std::string 未正确绑定到 const std::string&amp; 或返回 SIGSEGV

因此,当我为游戏编写一些功能时,我遇到了一些我不理解的问题,我寻求解释。因此,我实现了一个简单的事件系统,允许我在代码中向不同的系统发送通信。一切工作正常,直到我遇到将右值 std::string 传递给我的函数之一的问题,请考虑以下代码:

#include <vector>
#include <functional>
#include <iostream>
#include <unordered_map>
#include <memory>

enum class GameEvent
{
    SomeEvent,
    OtherEvent
};
class EventManager
{
public:
    template <typename ...Args>
    using EventCallback = std::function<void(Args...)>;

    template <typename ...Args, typename Callback>
    void addSubscriber(const GameEvent& gameEvent, Callback&& callback);

    template <typename ...Args>
    void notify(const GameEvent& gameEvent, Args... args);
private:
    struct ListenerBase
    {
        virtual ~ListenerBase() = default;
    };

    template <typename ...Args>
    struct ListenerWrapper : public ListenerBase
    {
        EventCallback<Args...> callback;

        template <typename Callback>
        ListenerWrapper(Callback&& callback_) : callback(std::forward<Callback>(callback_)) {}
        virtual …
Run Code Online (Sandbox Code Playgroud)

c++ string templates type-deduction

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

仅当字符串在 shell 中匹配时才删除字符串的第一个和最后一个字符?

所以我基本上是从文件中读取第一行,并且我希望修剪第一个和最后一个字符,但前提是它们等于某个字符。我希望从字符串中删除“{”和“}”,但前提是它们分别是第一个和最后一个字符。

输入:

{Some_random_data_here, {more data here}, test}  
Run Code Online (Sandbox Code Playgroud)

输出:

Some_random_data, {more data here}, test
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的完整命令,它能够删除第一个命令,但不能删除最后一个命令。

$(head -n 1 "$filePath" | sed s/^{//;s/}$//)
Run Code Online (Sandbox Code Playgroud)

bash shell

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