我有一个用例,我想将对象映射到 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) 我正在尝试制作一个小包装类,如
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'指定的返回类型"