小编Luc*_*ala的帖子

摆脱错误C2243

是否有可能摆脱C2243错误

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)

但是没有办法.

任何其他避免显式转换的解决方案?

c++ inheritance casting implicit-cast

10
推荐指数
2
解决办法
6272
查看次数

自动完成的最佳查询延迟

yui AutoComplete中,您使用多少毫秒作为查询延迟(最后一次键输入和服务器请求之间的时间)?

我最近使用按键级别模型作为参考,将类似于yui的自动完成cotrol的默认值从750ms更改为280ms .

还有其他有用的参考吗?

javascript yui autocomplete

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

SCRIPT70:从最近关闭的iframe中添加选项元素的选项时,权限被拒绝

从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)

html javascript iframe internet-explorer

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

最大可点击选项#IE8

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 html-select internet-explorer-8

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