小编cpl*_*rat的帖子

C ++特征矩阵说明

我直到最近才开始探索C ++ Eigen库,并对某些文档感到有些困惑。如果有人可以澄清这一点,那就太好了。

  1. 在常见的陷阱(https://eigen.tuxfamily.org/dox-devel/TopicPitfalls.html对齐问题部分中,它说:“的确,自C ++ 17以来,C ++对显式数据对齐没有足够好的支持。 ”。

    关于如何消除对齐问题的页面(https://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html#getrid),该文档说:“如果您只能将[c ++ 17]定位为最近的编译器(例如,GCC> = 7,clang> = 5,MSVC> = 19.12),那么您很幸运:启用c ++ 17应该就足够了。

    那么如果我在gcc> = 7.0的情况下使用c ++ 17,对齐就不是Eigen Matrix的问题吗?我了解这个权利吗?并且不需要宏EIGEN_MAKE_ALIGNED_OPERATOR_NEW吗?如果这是正确的,那么负责对齐问题的c ++ 14 / c ++ 17有什么区别?

  2. 第二个问题与值传递部分有关(https://eigen.tuxfamily.org/dox-devel/group__TopicPassingByValue.html)。该文档声称按值传递可能是非法的,并且可能使程序崩溃。这让我很困惑。传递值不只是调用复制构造函数吗?举个例子。

Eigen::Vector3f veca = ComputeVecA();
Eigen::Vector3f vecb = veca; //< If pass-by-value is unsafe, is this operation safe?
Run Code Online (Sandbox Code Playgroud)
  1. 最后,对于本征固定大小的矩阵类,我可以依靠RVO / NRVO吗?我怀疑答案是肯定的。

c++ eigen eigen3 c++17

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

Java通用接口返回类型

从C++迁移到Java.

我有一个第三方代码,我需要实现一个类似于此的接口.

public interface Foo<T>{
       public T doSomething();
}
Run Code Online (Sandbox Code Playgroud)

我想实现这个接口,以便我可以调用doSomething()并获得3个不同的类A, B and C,这些类扩展了一个共同的基础Z,如下所示.

public class A extends Z{...};
public class B extends Z{...};
public class C extends Z{...};
Run Code Online (Sandbox Code Playgroud)

我找不到任何避免编写以下3个类的方法.

public class ARet implements Foo<A>{...}
public class BRet implements Foo<B>{...}
public class CRet implements Foo<C>{...}
Run Code Online (Sandbox Code Playgroud)

对于给定的接口Foo,是否不可能编写一个返回T extends Z看起来像的实现public class Ret implements Foo<T extends Z>{...}.这似乎不起作用.有没有办法避免这三个类或没有办法绕过它?

java generics design-patterns interface

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

具有相同名称/命名空间但具有不同成员的结构

我看到一些奇怪的行为,我在这个结构内联初始化的后期向量中描述.支撑-初始化列表

我希望消除一个未定义行为的可能来源.我有以下两个类A,B它们都转发声明,struct Foo但cpp文件定义了如下的实际结构.

// This is A.h
namespace app {
    struct Foo;
    class A {
    private:
        std::vector<Foo> fooList;
    };
}

// This is A.cpp
struct app::Foo {
    std::string first;
    std::string second;
    unsigned flag;
};


// This is B.h
namespace app {
    struct Foo;
    class B {
    private:
        std::vector<Foo> fooList;
    };
}

// This is B.cpp
struct app::Foo {
    std::string first;
    std::string second;
    bool flag;
    float value;
};
Run Code Online (Sandbox Code Playgroud)

请注意,结构Foo …

c++ struct c++11

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

标签 统计

c++ ×2

c++11 ×1

c++17 ×1

design-patterns ×1

eigen ×1

eigen3 ×1

generics ×1

interface ×1

java ×1

struct ×1