小编Set*_*eth的帖子

确定整数位数的有效方法

什么是一个非常有效的确定多少位有在C++中的整数的方法吗?

c++ integer digits

138
推荐指数
10
解决办法
22万
查看次数

什么是wix'KeyPath'属性?

什么是Wix'KeyPath '属性?特别是,它如何适用于以下内容:

<Component Id="ProgramMenuDir" Guid="*">
  <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
  <RegistryValue Root="HKCU" Key="Software\CompName\AppName" 
                 Type="string" Value="" KeyPath="yes" />
</Component>
Run Code Online (Sandbox Code Playgroud)

installer windows-installer wix

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

创建注册表项以将文件扩展名与C++中的应用程序相关联

我想知道,这样当我的程序相关的数据文件被双击,打开应用程序和文件名作为参数传递给应用与我的C++应用程序注册文件扩展名的最彻底的方法.

目前,我通过我的wix安装程序执行此操作,但有些情况下应用程序将不会安装在用户的计算机上,因此我还需要通过应用程序创建注册表项的选项.

此外,这是否也意味着如果删除了应用程序,注册表中未使用的条目将被放置?

c++ registry file-extension

42
推荐指数
3
解决办法
9万
查看次数

了解gcroot

我一直在阅读这篇文章,以了解gcroot模板.我明白了

gcroot为垃圾收集堆提供句柄

然后

句柄本身不是垃圾收集.

我不明白的是以下内容:

当CLR对象与垃圾收集堆一起移动时,句柄将返回该对象的新地址.在将变量分配给gcroot模板之前,不必固定该变量.

这是否意味着即使存在引用该对象的gcroot句柄,垃圾收集器也会删除CLR对象?

它指的是什么是"新地址"?那么"变量在分配给gcroot模板之前不必固定"是什么意思?

.net c++-cli

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

将SWIG与以std :: string作为参数的方法一起使用

我使用SWIG来包装我的c ++类.一些方法有const std::string&一个参数.SWIG创建一个名为SWIGTYPE_p_std__string但是在调用c#中的方法时不能只传递普通字符串的类型.以下示例仅是SWIG包附带的修改示例:

public void setName(SWIGTYPE_p_std__string name) 
{
    examplePINVOKE.Shape_setName(swigCPtr, SWIGTYPE_p_std__string.getCPtr(name));
    if (examplePINVOKE.SWIGPendingException.Pending) throw examplePINVOKE.SWIGPendingException.Retrieve();
}
Run Code Online (Sandbox Code Playgroud)

在我的界面文件中我只有:

/* File : example.i */
%module example

%{
#include "example.h"
%}

/* Let's just grab the original header file here */
%include "example.h"
Run Code Online (Sandbox Code Playgroud)

并且用C++包装的方法是:

void Shape::setName(const std::string& name)
{
    mName = name;
}
Run Code Online (Sandbox Code Playgroud)

我必须在接口文件中放入某种类型的地图吗?如果是这样,我该怎么做?

c# c++ swig

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

使用Ninject注入实现相同接口的不同类

我正在实现构建器设计模式,以构建要在WPF UI上显示的不同类型的图形对象.我使用Ninject作为我的IOC容器.但是,我试图找到一个优雅的可扩展解决方案.

我有一个ChartDirector对象IChartBuilder作为依赖.我也有TemperatureChartBuilderThresholdChartBuilder实现IChartBuilder.我想无论是注入TemperatureChartBuilderThresholdChartBuilderChartDirector取决于被解雇或根据客户端调用的事件.我在下面用代码说明了我的问题.

// ChartDirector also depends on this
kernel.Bind<IExample>().To<Example>();

// when called in Method X...
kernel.Bind<IChartBuilder>().To<TemperatureChartBuilder>();

// when called in Method Y...
kernel.Bind<IChartBuilder>().To<ThresholdChartBuilder();

// TemperatureChartBuilder is a dependency of ChartDirector, need a way to dynamically
// allocate which binding to use.
var director = kernel.Get<ChartDirector>();

// without Ninject I would do
var director = new ChartDirector(new TemperatureChartBuilder);

// or
var director = new …
Run Code Online (Sandbox Code Playgroud)

c# ninject

11
推荐指数
2
解决办法
7671
查看次数

重载操作符作为成员函数还是非成员(朋友)函数?

我目前正在创建一个实用程序类,它将在其中重载运算符.使它们成为成员或非成员(friend)函数的利弊是什么?或者它是否重要?也许这是一个最好的做法?

c++ function operator-overloading friend

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

将std :: vector <T>转换为.NET List <U>的最有效方法是什么?

将std :: vector转换为.NET List的最有效方法是什么?

为了给出一些上下文,我用C++/CLI包装一个非托管的C++类.C++/CLI类包含一个指向C++类的指针,我有一个每个公共方法的包装器.

一个方法返回一个std :: vector,所以在我的包装器中我将返回.NET类List.即

// unmanaged class
class A
{
    public:
        std::vector<int> runList();
}

// managed class
public ref class A
{
    public:
        // the below is obviously extremely inefficient
        List<UInt32> MethodA()
        {
            std::vector<unsigned int> runList = mpChannelNode->runList();
            std::vector<unsigned int>::iterator itr;

            List<UInt32> list = gcnew List<UInt32>();

            for (itr = runList.begin(); itr != runList.end(); itr++)
            {
                list.Add(*itr);
            }

            return list;
        }

    private:
        A* mpChannelNode;
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能提高效率呢?随意为.NET类推荐不同的返回类型.让我们假设我只需要以任何形式或形式有效地将该向量导入托管世界.

.net c++-cli visual-c++

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

LINQ将列交换为行

是否有一个花哨的LINQ表达式,可以让我以更简单的方式执行以下操作.我有一个List<List<double>>,假设List是2d矩阵中的列,我想将列列表交换为行列表.我有以下明显的解决方案:

int columns = 5;
var values; // assume initialised as List<List<double>>()

var listOfRows = new List<List<double>>();
for (int i = 0; i < columns ; i++)
{
    List<double> newRow = new List<double>();
    foreach (List<double> value in values)
    {
        newRow.Add(value[i]);
    }
    listOfRows.Add(newRow);
}
Run Code Online (Sandbox Code Playgroud)

c# linq

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

使用Wix安装程序在startmenu程序中添加子文件夹的快捷方式

我正在尝试将程序快捷方式添加到开始菜单快捷方式中的现有文件夹中.例如All Programs -> AppNameFolder -> AppNameVersionFolder -> AppShortcut

为了实现这一点,我添加了额外的行:

          <Directory Id="ProgramMenuFolderApp" Name="App">
                <Directory Id="ProgramMenuDir" Name="APP 6.3.0">
Run Code Online (Sandbox Code Playgroud)

到我的.wxs文件中的以下代码:

    <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder" Name="Program Files">
            <Directory Id="CompanyName" Name="CompanyName">
                <Directory Id="App" Name="App">
                    <Directory Id="INSTALLDIR" Name="App 6.3.0">
                        <Component Id="MainExecutable" Guid="23FFE6FD-2BEA-4946-9875-8DBEEA5AAF55">
                            <File Id="AppEXE" Name="App.exe" Source="App.exe" KeyPath="yes">
                                <Shortcut Id="startmenu" Directory="ProgramMenuDir" Name="App 6.3.0" WorkingDirectory='INSTALLDIR' Icon="App.exe" IconIndex="0" Advertise="yes" />
                                <Shortcut Id="desktopApp" Directory="DesktopFolder" Name="App 6.3.0" WorkingDirectory='INSTALLDIR' Icon="App.exe" IconIndex="0" Advertise="yes" />
                            </File>
                        </Component>
                    </Directory>
                </Directory>
            </Directory>
        </Directory>
        <Directory Id="ProgramMenuFolder" Name="Programs">
            <Directory Id="ProgramMenuFolderApp" Name="App">
                <Directory Id="ProgramMenuDir" Name="App6.3.0">
                    <Component Id="ProgramMenuDir" …
Run Code Online (Sandbox Code Playgroud)

windows installer windows-installer wix startmenu

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