初始化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的比例分开.
这个问题似乎很常见,尽管我找不到答案。
我有这个带有唯一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) 好吧,最初我有几个常量(比如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++中尝试构造函数继承,它工作正常.但后来我发现我无法从子 类的实例中调用一个方法.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)