class B {};
class D : protected B {};
D d;
B *p = &d; // conversion from 'D *' to 'B &' exists, but is inaccessible
Run Code Online (Sandbox Code Playgroud)
我在我的应用程序中遇到此错误,最后我通过进行显式转换设法编译它:
D d;
B *p = (B*)&d;
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么通过使D类继承受B保护而使得隐式转换不可访问.
我试图通过在D类中创建一个运算符B()来避免显式转换,以使转换可访问:
class B {};
class D : protected B
{
public:
operator B() {return *this;}
};
Run Code Online (Sandbox Code Playgroud)
但是没有办法.
任何其他避免显式转换的解决方案?
在yui AutoComplete中,您使用多少毫秒作为查询延迟(最后一次键输入和服务器请求之间的时间)?
我最近使用按键级别模型作为参考,将类似于yui的自动完成cotrol的默认值从750ms更改为280ms .
还有其他有用的参考吗?
从iframe向select元素添加选项时,我们遇到了问题.该代码在Chrome,Firefox和Opera中运行良好,但在IE11中,我们在尝试从父窗口访问最近创建的选项时得到"SCRIPT70:Permision denied".
我们需要的是向选择元素添加选项从列表中选择它们.列表显示在灯箱(带有iframe)中,当选择一个元素时,必须将其添加到select元素,然后关闭灯箱(并销毁iframe).我们拥有的是这样的(简化):
父窗口:
<select id="dropdown">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<!-- in the real code, this iframe is shown when a button is pressed -->
<iframe src="iframe.html"></iframe>
<script>
$(document).ready(function() {
$('#dropdown').on('change', function() {
console.log($(this).children().last().val());
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
和iframe.html:
<a href="#" data-val="4">Add 4</a>
<a href="#" data-val="5">Add 5</a>
<a href="#" data-val="6">Add 6</a>
<script>
$(document).ready(function() {
$('a').on('click', function() {
var p = window.parent;
if(p) {
var dropdown = p.document.getElementById('dropdown');
if(dropdown) {
var opt = new Option($(this).data('val'), $(this).data('val'));
dropdown.options[dropdown.options.length] = opt;
//close self
$('iframe', …Run Code Online (Sandbox Code Playgroud) select元素中的可点击选项的最大数量似乎有限制.
如果有一个包含3200+选项的select元素.从3125到N的项目在单击时不会触发更改事件.但是,可以使用键盘选择项目.
不知道这是IE8的错误还是功能?在IE6,IE7,FF或chrome中没有这样的问题.
这是一个例子:
<html>
<head>
<title>Large select</title>
<script>
function loadData()
{
var s=document.getElementById('s');
for(i=0;i<3500;i++)
s.options[i]=new Option(i);
}
</script>
</head>
<body onload="loadData()">
<select id="s" multiple="multiple" size="20" onchange="alert('change')"></select>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
更新:我在ie8 beta(8.0.7000.0)中尝试了这个.它似乎在ie8 final中完美运行
javascript ×3
autocomplete ×1
c++ ×1
casting ×1
html ×1
html-select ×1
iframe ×1
inheritance ×1
yui ×1