小编msg*_*xim的帖子

初始化QList的正确方法是什么?

初始化QList的正确方法是什么?我想让这段代码更短:

QSplitter splitter;
QList<int> list;
list.append(1);
list.append(1);
splitter.setSizes(list);
Run Code Online (Sandbox Code Playgroud)

但是当我从std :: list使用初始化时,它似乎不起作用:

splitter.setSizes(QList<int>::fromStdList(std::list<int>(1, 1)));
Run Code Online (Sandbox Code Playgroud)

在后一种情况下,分离器似乎以1:0的比例分开.

c++ qt qlist

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

window.onload事件不会触发或“如何正确初始化js项目?”

这个问题似乎很常见,尽管我找不到答案。

我有这个带有唯一canvas标签的简单html

<!doctype html>

  <head>
    <meta charset = "utf-8">
    <script src="js/script.js"></script>
    <title>Title</title>
  </head>

  <body>
    <canvas id = "canvas"></canvas>  
  </body>

</html>
Run Code Online (Sandbox Code Playgroud)

在script.js中,我试图捕获window.onload事件:

window.onload = init;

function init(){
  var canvas = document.getElementById("canvas");
  var context = canvas.getContext("2d");

  context.fillRect(50, 20, 150, 150);
}
Run Code Online (Sandbox Code Playgroud)

但是什么也没发生。我假设甚至在执行第一行js之前就已加载html。

因此,我发现onload事件的替代方法是将脚本定义放在正文的末尾,因此在执行脚本时,应该已经加载了窗口。所以我确实是这样的:

<!doctype html>

  <head>
    <meta charset = "utf-8">   
                                  <!-- gone -->
    <title>Title</title>
  </head>

  <body>
    <canvas id = "canvas"></canvas> 
    <script src="js/script.js"></script>  <!-- inserted -->
  </body>

</html>
Run Code Online (Sandbox Code Playgroud)

<!-- window.onload = init; -->
init()                              <!-- inserted -->

function init(){
  var canvas = …
Run Code Online (Sandbox Code Playgroud)

html javascript

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

在基类的构造函数之前调用派生类的构造函数

好吧,最初我有几个常量(比如MAX_SPEED)在每个派生类中都有不同的值.我们的想法是在基类的某些方法中使用这些值.那时我才意识到我不能用常量做到这一点,所以我创建了只读属性.

我需要一个方法在实例化时将这些值分配给私有字段,最好是在基类中.但首先我必须在派生类中确定原始值.由于这些是属性,我在定义时找不到初始化它们的方法,因此唯一的方法是在派生构造函数中.

这就是问题出现的地方:在分配给基类中的私有字段之后,值被初始化.我得到的解决方案是创建一个虚拟方法并在那里进行分配.

有没有办法从派生类调用基础构造函数,以便首先调用派生构造函数的代码?

class BaseClass
{
    public BaseClass()
    {
        System.Console.WriteLine("This should be shown after");
    }
}

class DerivedClass : BaseClass
{
    public DerivedClass() : base()
    {
        System.Console.WriteLine("This should be shown first");
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,在这个例子中,它可以反过来工作.有解决方案吗?

c# inheritance constructor

4
推荐指数
2
解决办法
7943
查看次数

无法从子实例调用基类的公共方法

我想在C++中尝试构造函数继承,它工作正常.但后来我发现我无法从 的实例中调用一个方法.Visual Studio说

方法Mother :: ShowName不可用

即使它是公开的,据我所知,必须从儿童班获得.有什么我做错了吗?

class Mother{

protected:
  char* name;

public :    
  Mother(char* _name){
      name = _name;
  }

  void ShowName(){
      cout << "my name is: " << name << endl;
  }
};


class Daughter : Mother{
public:
  Daughter(char* _name) : Mother(_name) {
  }
};

int main(){
  Daughter d1("Masha");
  d1.ShowName();

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ inheritance

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

标签 统计

c++ ×2

inheritance ×2

c# ×1

constructor ×1

html ×1

javascript ×1

qlist ×1

qt ×1