最近,发布了Windows 的原生Docker客户端(> = Windows 7).
我想知道:是否可以转发访问物理设备,将Windows作为主机运行?
使用*nix主机,这似乎可以使用以下语法:
docker run -t -i --device=/dev/ttyUSB0 ubuntu bash
Run Code Online (Sandbox Code Playgroud)
(如建议在这里),这将转发的USB设备/dev/ttyUSB0*nix的系统,以泊坞窗图像上.
--device可以在docker文档中找到该标志的描述.
Windows主机的语法是什么?
假设以下XAML定义窗口:
<Window x:Class="LayoutTests.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:LayoutTests"
Title="Window1">
<Window.Resources>
<XmlDataProvider x:Key="XmlData" IsInitialLoadEnabled="True">
<x:XData>
<Items xmlns="">
<Item text="Item 1" type="A" />
<Item text="Item 2" type="B" />
<Item text="Item 3" type="A" />
</Items>
</x:XData>
</XmlDataProvider>
<DataTemplate x:Key="TypeATemplate">
<TextBlock Text="{Binding XPath=./@text}" Foreground="Red"/>
</DataTemplate>
<DataTemplate x:Key="TypeBTemplate">
<TextBlock Text="{Binding XPath=./@text}" Foreground="Green"/>
</DataTemplate>
<DataTemplate x:Key="HeaderTemplate">
<TextBlock Text="A Header"/>
</DataTemplate>
<local:TypeSelector x:Key="TypeSelector" TypeATemplate="{StaticResource TypeATemplate}" TypeBTemplate="{StaticResource TypeBTemplate}"/>
</Window.Resources>
<Grid>
<ListView ItemsSource="{Binding Source={StaticResource XmlData}, XPath='/Items/Item'}" ItemTemplateSelector="{StaticResource TypeSelector}">
<!--<ListView.View>
<GridView>
<GridViewColumn Width="Auto" HeaderTemplate="{StaticResource HeaderTemplate}"/>
</GridView>
</ListView.View>-->
</ListView>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
并DataTemplateSelector …
以下代码给出了void b() { m = &A::a; };声明A::a()受保护的编译错误.(它是 - 但这应该没问题)
然而编译器在我写的时候并不关心B::a().即使两者都意味着我想要的相同,A::a()因为它明确表示a()在A中定义.
那么禁止的原因A::a()是什么?
编辑
也许有人可以找到一个例子,如果A::a()允许的话会有问题B::b().如果有这样的例子,我会将其标记为问题的答案.
/编辑
#include <iostream>
#include <iomanip>
#include <string>
#include <cstdio>
class A {
protected:
void a(){ std::cout << "A::a()" << std::endl; };
};
typedef void (A::*f)();
class B : public A {
public:
void b() { m = &A::a; }; // wont compile
// void b() { m = …Run Code Online (Sandbox Code Playgroud) 经过一段时间的使用perforce后,我留下了很多仍然开放的变更列表.要清理我想要摆脱它们的一部分.所以这就是使这个变得复杂的原因:
当上述一个或多个点对于更改列表为真时,p4v(可视客户端)将不允许您删除更改列表.
那么删除这些变更清单的有效方法是什么?
stackoverflow上有这个问题,它主张Scott Meyers规则只有在该类中有虚函数时才使析构函数成为虚拟.
我在一家拥有大型框架的公司工作,如果您的课程未来可以扩展,那么在编码时不清楚.在那个时间点,也可能无法更改该类(因为它是已发布的包的一部分).
现在想象以下场景:
class A {
public:
A();
virtual ~A();
virtual m();
};
class B : public A {
public:
B();
~B();
};
class C : public B {
public:
C();
virtual ~C();
virtual m();
};
Run Code Online (Sandbox Code Playgroud)
所以我创造了class B,到现在为止,它无法改变.现在class C已创建,并用作B:
B * b = new C();
delete b;
Run Code Online (Sandbox Code Playgroud)
会发生什么事情,C的析构函数永远不会被调用,对吧?
在这种情况下:一个类总是应该有一个虚拟析构函数?
我该怎么做来编组数组的哈希?
以下代码仅打印{}.
s = Hash.new
s.default = Array.new
s[0] << "Tigger"
s[7] << "Ruth"
s[7] << "Puuh"
data = Marshal.dump(s)
ls = Marshal.restore( data )
p ls
Run Code Online (Sandbox Code Playgroud)
如果散列不包含数组,则可以正确恢复.