小编Ben*_*igt的帖子

在C++/CLI中跟踪引用

有人可以解释我下面的代码片段吗?

value struct ValueStruct {
    int x;
};

void SetValueOne(ValueStruct% ref) {
    ref.x = 1;
}

void SetValueTwo(ValueStruct ref) {
    ref.x = 2;
}

void SetValueThree(ValueStruct^ ref) {
    ref->x = 3;
}

ValueStruct^ first = gcnew ValueStruct;
first->x = 0;
SetValueOne(*first);

ValueStruct second;
second.x = 0;
SetValueTwo(second); // am I creating a copy or what? is this copy Disposable even though value types don't have destructors?

ValueStruct^ third = gcnew ValueStruct;
third->x = 0;
SetValueThree(third); // same as the first …
Run Code Online (Sandbox Code Playgroud)

c++-cli

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

C++/CLI IEnumerable和IEnumerator实现

有没有人有一个如何在C++/CLI中实现IEnumerable和IEnumerator的有效的分步示例?或者,是否有人知道如何修复MS Connect中的以下代码,这些代码无法在Visual Studio 2005中编译?

http://connect.microsoft.com/VisualStudio/feedback/details/101089/how-to-implement-ienumerable-t-and-ienumerable-c-cli

using namespace System;
using namespace System::Collections::Generic;

generic <class T>
public ref struct MyArray : public IEnumerable<T>
{    

    MyArray( array<T>^ d )
    {
        data = d;
    }
    ref struct enumerator : IEnumerator<T>
    {
        enumerator( MyArray^ myArr )
        {
            colInst = myArr;
            currentIndex = -1;
        }

        bool MoveNext()
        {
            if( currentIndex < colInst->data->Length - 1 )
            {
                currentIndex++;
                return true;
            }
            return false;
        }

        property T Current
        {
            T get()
            {
                return colInst->data[currentIndex];
            }
        };
        // This …
Run Code Online (Sandbox Code Playgroud)

ienumerable ienumerator c++-cli

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

重新初始化timeval结构

如何从time.h重新初始化timeval结构?

我意识到我可以将结构的两个成员重置为零,但是我还有其他方法可以忽略吗?

c++ struct timeval

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

C++ - 重载operator new并提供其他参数

我知道你可以超载操作员new.执行此操作时,size_t默认情况下会为方法发送一个参数.但是,是否可以将size_t参数 - 以及其他用户提供的参数 - 发送到重载的new运算符方法?

例如

int a = 5;
Monkey* monk = new Monkey(a);
Run Code Online (Sandbox Code Playgroud)

因为我想覆盖这样的新运算符

void* Monkey::operator new(size_t size, int a)
{

...

}
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑:这是我想要完成的事情:

我在应用程序的开头(内存池)分配了一大块虚拟内存.继承我的基类的所有对象都将继承其重载的new运算符.我想有时在重载new中传递一个参数的原因是告诉我的内存管理器我是否要使用内存池,或者我是否想用malloc分配它.

c++ memory-management operator-overloading placement-new

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

为什么我不能写IO.Directory.GetFiles?

我来自一个VB.Net使用Imports System然后IO.Directory.GetFiles(...)工作的环境.

另一方面,似乎using System;不足以在IO.Directory 没有前缀的情况下编写使用System..唯一的解决方法似乎是 using IO = System.IO;

为什么?


示例代码:

using System;
using System.IO;

namespace Test {
    class Program {
        static void Main(string[] args) {
            System.Console.WriteLine(IO.Directory.GetFiles(System.Environment.CurrentDirectory)[0]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我的问题不是我应该怎么做才能使我的代码工作,但具体是"为什么我不能写IO.Directory.GetFiles?"

c# using-directives

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

在64位系统上使用32位dll显示0x8007000B错误

我必须在我的应用程序中使用第三方DLL.DLL是32位,我使用的系统是64位操作系统.

我在我的DotNet应用程序(framework-4.5)中导入了32位DLL,如下所示

 [DllImport("Sample.dll",
  EntryPoint = "Add",
  CharSet = CharSet.Ansi,
  CallingConvention = CallingConvention.StdCall)]
  public static extern int Add(int iA, int iB);
Run Code Online (Sandbox Code Playgroud)

在IIS 7.5中 - 我将"启用32位应用程序"设置为"True".

并尝试将编译器管理器设置为 - X86,x64和任何CPU.

但是所有的尝试都会导致相同的错误

 An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题......

iis dllimport visual-studio-2010 32bit-64bit c#-4.0

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

盒装值只是指向托管堆中存储的值副本的指针吗?

在我看来,这就是我所认为的拳击和拆箱.而已.有人可以确认这是正确的吗?

在此输入图像描述

c# boxing

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

获取Windows上的卷大小

我正在编写一个库来提取有关Windows系统(XP或更高版本)上的物理磁盘,分区和卷的信息.

我正在努力获得音量.以下是我所知道的方法以及每个方法失败的原因:

奇怪的是,来自FSCTL_GET_VOLUME_BITMAP和WMI CIM_LogicalDisk.Size属性的集群数量一致,并且两者都比来自的值小4096字节IOCTL_DISK_GET_LENGTH_INFO.

获得容量的正确方法是什么?由于所有其他查询在没有管理员访问权限的情况下工作,我也在寻找最少权限的解决方案.

winapi raid disk-partitioning

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

std :: vector <T> :: pop_back的形式规范

我正在查看C++标准(草案n3797),我找不到任何pop_back适用的文档std::vector,仅供参考std::list.它真的不见了吗?

具体来说,我一直在寻找pop_back不会改变容量的保证.还是有这样的保证?(我希望迭代器和对其他元素的引用仍然有效,但我找不到保证,并且它不会限制删除最后一个元素的情况,无论如何)

c++ language-lawyer

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

挂钩失败后如何保留旧的提交消息

当我添加一个commit-msg钩子,它以1表示退出以指示一些错误,当我再次运行git commit时,原始git commit msg为空/未使用.

有没有办法保留旧的提交消息,所以我不必再次输入整个消息,只需编辑旧的提交消息?

git githooks

7
推荐指数
0
解决办法
100
查看次数