小编Seb*_*ski的帖子

返回时奇怪的C++引用失效

看看下面的代码.这里的目标是通过两个函数(from ReferenceProvider::getReference()getRef()to main())返回一个引用:

#include <tchar.h>
#include <assert.h>
#include <string>

class BaseClass {
public:
  virtual void write() const {
    printf("In base class\n");
  }
};
typedef BaseClass* BaseClassPointer;

class ChildClass : public BaseClass {
public:
  virtual void write() const {
    printf("In child class\n");
  }
};
typedef ChildClass* ChildClassPointer;

//////////////////////////////////////////////////////////////////////////

ChildClass* g_somePointer = new ChildClass();

class ReferenceProvider {
public:
  const BaseClassPointer& getReference() {
    const BaseClassPointer& val = g_somePointer;
    return val;
  }
};

ReferenceProvider g_provider;

const BaseClassPointer& getRef() {
  std::string …
Run Code Online (Sandbox Code Playgroud)

c++ reference visual-c++

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

Random.Next() 可以从它的输出中预测吗

拥有这个(简化的)C# 类:

public static class RandomValue
{
    private static readonly Random s_random = new Random();

    public static int GetRandomValue()
    {
        lock (s_random)
        {
            return s_random.Next();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以GetRandomValue()通过查看此方法生成的值来预测 的下一个值?

假设(为了问题):

  • 攻击者知道(当然)的种子。
  • 攻击者可以观察无限数量的后续结果GetRandomValue()

我问是因为我看到一些代码使用类似的方法来生成某种访问令牌。这段代码不是我写的,我可能会使用 .NET 的加密随机类之一。我只是好奇这是否仍然足够安全。

.net c# security random

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

从C++/CLI项目导出本机类型

如何导出C++/CLI项目中定义的本机类的方法?这就是我所拥有的:

.h文件:

#pragma once

#ifdef COMPILE_PRODUCER_LIB
  #define PRODUCER_LIB_EXPORT __declspec(dllexport)
#else
  #define PRODUCER_LIB_EXPORT __declspec(dllimport)
#endif

public class PRODUCER_LIB_EXPORT MySecondNativeClass {
public:
  MySecondNativeClass(int val);

  int getValue() const;

private:
  int m_value;
};
Run Code Online (Sandbox Code Playgroud)

.cpp文件:

#include "stdafx.h"
#include "MySecondNativeClass.h"

MySecondNativeClass::MySecondNativeClass(int val) {
  this->m_value = val;
}

int MySecondNativeClass::getValue() const {
  return this->m_value;
}
Run Code Online (Sandbox Code Playgroud)

在同一个项目中使用此类工作正常,但在另一个(C++/CLI)项目中使用它会给我"未解析的外部符号"链接器错误.(COMPILE_PRODUCER_LIB是仅在包含类的项目中定义的预处理器定义.)

我已经创建了一个小的解决方案(针对Visual Studio 2010),它显示了问题(在本页末尾下载).在那里,本机类MySecondNativeClass在项目"ManagedProviderLib"中定义,并在"ExternalTestClass.cpp"中使用(在项目"ManagedExternalLib"中).

c++-cli dllexport visual-c++

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

c ++ reinterpret_cast,virtual和templates好吗?

在C++中,假设以下类层次结构:

class BaseClass { };
class ChildClass : public BaseClass { };
Run Code Online (Sandbox Code Playgroud)

进一步假设这两个类的工厂类具有通用的模板化基类:

template<typename T>
class Factory {
public:
  virtual T* create() = 0;
};

class BaseClassFactory : public Factory<BaseClass> {
public:
  virtual BaseClass* create() {
    return new BaseClass(&m_field);
  }
private:
  SomeClass m_field;
};

class ChildClassFactory : public Factory<ChildClass> {
public:
  virtual ChildClass* create() {
    return new ChildClass(&m_field);
  }
private:
  SomeOtherClass m_field; // Different class than SomeClass
};
Run Code Online (Sandbox Code Playgroud)

需要注意的是的大小/内部结构ChildClassFactoryBaseClassFactory不同的是由于它们的不同的字段.

现在,如果有一个ChildClassFactory(或Factory<ChildClass>)的实例,我可以安全地将其转换为Factory<BaseClass>(通过 …

c++ virtual templates casting reinterpret-cast

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

R曲线中X和Y轴的刻度相同

当我使用R的curve()功能时,有没有办法强制它在X轴和Y轴上使用相同的比例?

例如,考虑这个R代码

mean <- 5
variance <- 0.05
curve(exp((((x - mean) / variance)^2) * -0.5), mean - 2, mean + 2)
Run Code Online (Sandbox Code Playgroud)

这会给我这个情节:

绘制曲线图

如您所见,X轴和Y轴使用不同的比例.我怎样才能解决这个问题?

注意:我知道我可以手动指定Y轴的范围(通过ylim=),但我不想使用它(因为这需要在函数更改时采用它).

plot r

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

在PowerShell中调用Sort-Object而不使用管道

我是PowerShell的新手,我只想弄清楚它是如何工作的.

那么,我该如何编写这段代码:

Get-ChildItem C:\ | Sort-Object Length
Run Code Online (Sandbox Code Playgroud)

作为多行代码?我试过这个:

$child_items = Get-ChildItem C:\
Sort-Object $child_items Length
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我越来越:

Sort-Object : A positional parameter cannot be found that accepts argument 'Length'.
Run Code Online (Sandbox Code Playgroud)

powershell pipe

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

WPF UI元素的透明度

在WPF中是否可以制作某个元素 - 例如,Canvas包含按钮 - 半透明?到目前为止,我所能找到的是如何使整个窗口透明或使WPF形状的背景透明; 但那不是我需要的.

请在XAML或C#中提供答案 - 我不会说Visual Basic.

wpf transparency

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

好奇心:将C#结构转换为对象仍然会复制它

这个问题更多的是出于好奇而不是真正的问题.请考虑以下代码(C#4.0,如果重要):

class Program {
  static Point myPoint = new Point(3, 5);

  static void Main(string[] args) {
    Console.WriteLine("Point Struct Before: " + myPoint);
    object point = GetPoint();
    Console.WriteLine("Point Object Before: " + point);
    myPoint.X = 10;
    Console.WriteLine("Point Struct After: " + myPoint);
    Console.WriteLine("Point Object After: " + point);
  }

  static object GetPoint() {
    return myPoint;
  }
}
Run Code Online (Sandbox Code Playgroud)

这输出如下:

Point Struct Before: 3;5
Point Object Before: 3;5
Point Struct After: 10;5
Point Object After: 3;5
Run Code Online (Sandbox Code Playgroud)

现在,这应该工作,这意味着返回的点GetPoint()被复制而不是被引用.(否则最后一行也会读"10; 5".)

我现在的问题是:为什么这有效?编译器如何知道是复制还是引用对象?这是否意味着此决定是在运行时而不是在编译期间完成的?

此外,这现在允许我设置point …

c# clr boxing c#-4.0

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