小编gsr*_*ion的帖子

我可以使用 MapStruct 控制映射顺序吗?

我有一个用例,我想将对象映射到 ByteBuffer 进行传输......

    @Mapper
    public static interface ByteBufferMapper {
        public static ByteBufferMapper INSTANCE = Mappers.getMapper(ByteBufferMapper.class);

        default byte toByte(ByteBuffer buffer) {
            byte b = buffer.get();
            return b;
        }
    }

    public static class Dto {
        public byte b;
        public byte bb;
        ...
    }

    @Mapper(uses = ByteBufferMapper.class)
    public static interface DtoMapper {
        public static DtoMapper INSTANCE = Mappers.getMapper(DtoMapper.class);

        @Mapping(source = "buffer", target = "bb")
        @Mapping(source = "buffer", target = "b")
        Dto byteBufferToDto(ByteBuffer buffer);
    }

    public static void main( String[] args ) {
        ByteBuffer …
Run Code Online (Sandbox Code Playgroud)

mapstruct

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

模板转换操作符C++

我正在尝试制作一个小包装类,如

template <typename T>
class EdgeTriggeredState

{

public:
    void Tick()
    {
        oldData = newData;
    }

    EdgeTriggeredState& operator =(const T& v)
    {
        newData = v;
        return *this;
    }

//  T& operator = (void)
//  {
//      return oldData;
//  }

//  T& operator T()
//  {
//      return oldData;
//  }

private:
    T oldData;
    T newData;
};
Run Code Online (Sandbox Code Playgroud)

基本上我希望能够直接为类包装的值赋予类型为T的变量.我已经尝试实现了一个赋值(到类型T)操作符和一个强制转换操作符来输入T.我在C++上有点生疏,因为我一直在C中工作.有没有办法实现这个而不创建一个命名的getter方法?

当我取消注释第一次实现尝试时,我得到错误

"../EdgeTriggeredState.h:19:21:错误:'T&EdgeTriggeredState :: operator =()'必须只接受一个参数"

当我取消注释第二个实现(并注释掉第一个实现)时,我得到错误:

"../EdgeTriggeredState.h:24:16:错误:为'运营商T'指定的返回类型"

c++ casting operator-overloading

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

标签 统计

c++ ×1

casting ×1

mapstruct ×1

operator-overloading ×1