模板const /非const参数强制转换(Template const/non-const argument cast)
我经历了一些搜索但却找不到这个搜索。 考虑这种情况:
template <class T> class TemplClass; void a_function(TemplClass<const X>&); TemplClass<X> inst; a_function( inst ); // fails
“从'TemplClass'类型的表达式''TemplClass&'类型的引用无效初始化”
据我所知,这种情况是100%安全的。 尽管如此,C ++仍然不允许这样做。 所以我想知道使用什么演员而不是琐碎的C-cast。
a_function( static_cast<TemplClass<const X>&>(inst) ); // fails, similar error message a_function( reinterpret_cast<TemplClass<const X>&>(inst) ); // works
dynamic_cast是不可能的,const_cast也失败了(这是正确的)。
reinterpret_cast感觉很腥(是吗?)。 但有没有我错过的某种技巧的解决方案? 任何人都知道为什么标准不能简单地发现这是好事吗? 或者这个演员有什么“坏”吗?
I went through some searches but couldn't quite find this one. Consider this situation:
template <class T> class TemplClass; void a_function(TemplClass<const X>&); TemplClass<X> inst; a_function( inst ); // fails
"invalid initialization of reference of type ‘TemplClass&’ from expression of type ‘TemplClass’"
The situation is 100% safe as far as I can tell. Still, C++ does not allow this. So I wonder what cast to use instead of the trivial C-cast.
a_function( static_cast<TemplClass<const X>&>(inst) ); // fails, similar error message a_function( reinterpret_cast<TemplClass<const X>&>(inst) ); // works
dynamic_cast is out of the question, const_cast fails too (and rightly so).
The reinterpret_cast feels fishy (is it though?). But is there a solution with some kind of trick that I missed? Anyone know why the standard does not simply detect that this is something good? Or is there something 'bad' about this cast?
原文:https://stackoverflow.com/questions/36178920
最满意答案
我在你的笑脸图片中添加了属性
draggable="true"
和IDid="myImg"
。
然后,如果您将dataTransfer
事件属性设置并获取到originalEvent
,它可以正常工作。
;)$(".dropzone").on("dragover", function(ev) { ev.preventDefault(); }); $(".dropzone").on("drop", function(ev) { ev.preventDefault(); var data = ev.originalEvent.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); }); $(".dragable").on("dragstart", function(ev) { ev.originalEvent.dataTransfer.setData("text", ev.target.id); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="dropzone" style="width: 180px; height: 180px; padding: 10px; margin: 0px; border: 1px solid black;"></div> <br> <div class="dropzone" style="width: 180px; height: 180px; padding: 10px; margin: 0px; border: 1px solid black;"> <img class="dragable" draggable="true" id="myImg" src="https://image.spreadshirtmedia.net/image-server/v1/compositions/22839312/views/1,width=300,height=300,version=1478003241/smiley-smile-men-s-t-shirt.jpg" width="180"> </div>
I added the propertie
draggable="true"
and an IDid="myImg"
to your smiley image.
Then, if you set and get thedataTransfer
event property into theoriginalEvent
, it works fine.
;)$(".dropzone").on("dragover", function(ev) { ev.preventDefault(); }); $(".dropzone").on("drop", function(ev) { ev.preventDefault(); var data = ev.originalEvent.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); }); $(".dragable").on("dragstart", function(ev) { ev.originalEvent.dataTransfer.setData("text", ev.target.id); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="dropzone" style="width: 180px; height: 180px; padding: 10px; margin: 0px; border: 1px solid black;"></div> <br> <div class="dropzone" style="width: 180px; height: 180px; padding: 10px; margin: 0px; border: 1px solid black;"> <img class="dragable" draggable="true" id="myImg" src="https://image.spreadshirtmedia.net/image-server/v1/compositions/22839312/views/1,width=300,height=300,version=1478003241/smiley-smile-men-s-t-shirt.jpg" width="180"> </div>
相关问答
更多-
拖放RealmResults(Drag and drop RealmResults)[2021-12-14]
RealmResult不是列表,因此您无法在RealmResult交换项目。 你可以做的是 Listlist = realm.copyFromRealm(realmResults); 但是,这将使列表不受管理,这意味着如果更新数据库中的数据,对象将不会自动更新。 A RealmResult is not a list and hence you cannot swap the items in RealmResult. What you can do is List li ... -
我相信你的问题是, 响应者链中的某些东西正在处理-[draggingEntered:]并拒绝拖动,然后你的窗口才能到达它。 对于一个典型的AppKit应用程序,在进入窗口之前,一个动作消息从NIB转到第一响应者,任何东西都挂在它的背面,然后是最里面的视图及其委托,然后是它的所有祖先视图及其委托。 因此,例如,如果您有一个处理拖动消息的文本编辑视图,并且您拖动该视图,则窗口将不会看到它。 无论如何,有很多方法可以调试它,但最简单的方法是让每个方法从self , print ing(或logging.log g ...
-
您可以像这样设置数据: e.originalEvent.dataTransfer.setData('Text', this.model.id); 这是因为Backbone使用jQuery挂钩事件, e是一个jQuery事件对象。 You can set the data like this: e.originalEvent.dataTransfer.setData('Text', this.model.id); This is because Backbone is hooking up the event ...
-
JS使用DOM拖放(JS Drag and drop with DOM)[2023-05-06]
假设您的意思是使用动态创建的元素进行拖动,我已经更新了您的jsfiddle。 http://jsfiddle.net/7c3v0s1s/6/我在进行更改时将代码包装在命名空间中。 HTML -
我解决了这个问题。 我对鼠标事件进行了更改 private void dataGridView1_MouseMove(object sender, MouseEventArgs e) { if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { if (dragBoxFromMouseDown != Rectangle.Empty && !dragBox ...
-
目前还没有内置的交互 ,但Serenity / JS很容易扩展,因此您可以创建自定义交互(甚至可以将其作为拉取请求提交?)。 以下是我创建自定义交互的步骤。 1.研究量角器的方式 首先,考虑如何使用普通的Protractor实现此功能? 量角器的API文档提供以下选项: // Dragging one element to another. browser.actions(). mouseDown(element1). mouseMove(element2). mouseUp(). ...
-
这实际上不是由库或侦听器引起的,它是由位于相同布局中的EditText引起的。 它是通过创建一个子类EditText并忽略dragEvent的新类来解决的。 public class EditTextNoDrag extends EditText { public EditTextNoDrag(Context context) { super(context); } public EditTextNoDrag(Context context, AttributeSet attrs) ...
-
JS:拖放返回错误(JS: drag and drop returning error)[2022-10-27]
我在你的笑脸图片中添加了属性draggable="true"和ID id="myImg" 。 然后,如果您将dataTransfer事件属性设置并获取到originalEvent ,它可以正常工作。 ;) $(".dropzone").on("dragover", function(ev) { ev.preventDefault(); }); $(".dropzone").on("drop", function(ev) { ev.preventDefault(); var data ... -
JS - 拖放帮助(JS - Drag and Drop assistance)[2024-03-04]
你可以添加一个计数器并检查它是否等于document.querySelectorAll('[data-drop]').length : var counter = 0; function dropPic(ev) { ev.preventDefault(); var data = ev.dataTransfer.getData('text'); //make it to only drop in certain DIV attribute if (ev.targ ... -
刚刚做了一些搜索,并找到了如何解决它。 在NSTreeController的Attributes中,将fetch谓词设置为parent == nil 。 Just did a Bit of searching around, and found how to fix it. In the Attributes for the NSTreeController set the fetch predicate as parent == nil.