小编Joh*_*han的帖子

C++模板和别名

这将在库中使用,而不是像示例一样,下面的示例使得它只是解释了问题.

我有一个BaseType模板专门化的模板类.

template<class...> 
class BaseType; //Forward declare

template<typename T>  
BaseType<T> { /* ...implementation 1... */ };

template<typename T, typename R>  
BaseType<T,R> { /* ...implementation 2... */ };
Run Code Online (Sandbox Code Playgroud)

我现在将为shared_ptr<BaseType>模板创建一个别名.为其中一个模板版本执行此操作很好.

template<typename T>
using SlotType = std::shared_ptr<BaseType<T> >;

using EventArgSlot = SlotType<EventArgs>;

EventArgSlot slot1;
Run Code Online (Sandbox Code Playgroud)

但是我应该如何定义别名,以便它也支持这个:

using MessageIntegerSlot = SlotType<MessageArgs, int>;
MessageIntegerSlot slot2;
Run Code Online (Sandbox Code Playgroud)

只使用相同的附加模板参数添加其他别名不起作用:

template<typename T, typename R>
using SlotType = std::shared_ptr<BaseType<T,R> >;
Run Code Online (Sandbox Code Playgroud)

这可以在C++ 11/14中解决吗?

c++ alias templates c++11 c++14

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

ItemTemplate 中带有 RadioButton 的 WPF ListView 选择

我使用 MVVM Light (WPF)。我想在 ListView 中构建一个样式为 ToggleButtons 的复选框菜单,并根据选中的复选框在内容控件中显示一些控件。ListView中我的的ItemSource已设置为ObservableCollection<ViewModelInfo>ViewModelInfo对象持有约视图模型和视图的信息显示。SelectedItem我已将列表视图绑定到SelectedViewModelInfoItemViewModel 上的一个属性。该SelectedViewModelInfoItem属性将从所选ViewModelInfo项目中抓取信息并设置正确的内容控件。

<ListView Grid.Column="0" Grid.Row="0" Grid.RowSpan="10" 
          ItemsSource="{Binding LeftPaneViewModelInfoItems}" 
          Background="Transparent" SelectedItem="{Binding SelectedViewModelInfoItem}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <RadioButton Content="{Binding Text}" 
                         Style="{StaticResource RadioButtonToggleButtonStyle}" 
                         GroupName="DisplayPage"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)

我看到的问题是 ListView 的选择似乎与 RadioButtons 选中状态完全分开,所以我必须单击切换按钮旁边的按钮来选择它,我还从 ListView 获得了覆盖颜色。

问题:我如何最简单地将我的集合显示ViewModeInfo为切换按钮列表,以确保我只看到一个切换按钮列表(不是 ListView 中的突出显示覆盖),但仍确保所选(选中的切换按钮)设置为SelectedViewModelInfoItem.

我应该提到我已经探索了EventToCommand将 Radiobutton 的 Checked 事件绑定到 ViewModel 上的 RelayCommand。如果我可以将实际的 ViewModelItem 作为事件参数而不是默认的 EventArgs(源是单选按钮),它会起作用。我无法以这种方式解决它,但是如果有一种方法可以将 ViewModelItem 作为 eventarg,它可能是一个不错的解决方案。

wpf binding styles mvvm mvvm-light

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

std :: string中的0xc2字符

以下字符串的大小为4而不是我预期的3.

std::string s = "\r\n½"; 
int ss = s.size(); //ss is 4
Run Code Online (Sandbox Code Playgroud)

当循环通过字符串字符逐个字符转换为十六进制时我得到

  • 0x0D(回车的十六进制代码)
  • 0x0A(换行的十六进制代码)
  • 0xc2(十六进制代码,但这是什么?)
  • 0xbd(½字符的十六进制代码)

0xc2来自哪里?它是某种编码信息吗?我虽然std :: string在字符串中每个可见字符都有一个字符.有人可以确认0xc2是"字符集修饰符"吗?

c++ char stdstring

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

标签 统计

c++ ×2

alias ×1

binding ×1

c++11 ×1

c++14 ×1

char ×1

mvvm ×1

mvvm-light ×1

stdstring ×1

styles ×1

templates ×1

wpf ×1