小编The*_*Saw的帖子

有没有办法专门化模板来定位基元?

在专业类模板,我想有一个专业化的目标完全成熟的类(完整的构造函数,析构函数等)和一个专业化的目标原语(int,float,等).我见过的唯一部分专业化是针对指针类型(via T*).有没有办法做到这一点?

c++ primitive templates

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

如何使 T 类型的字段可变?

我试图将一堆重复代码合并到一个具有以下结构的实用程序类中:

public class Shared<T>
{
    private volatile T _value;

    public object Lock { get; private set; }

    public T Value
    {
        get { lock (Lock) return _value; }
        set { lock (Lock) _value = value; }
    }

    public Shared(T startingValue)
    {
        _value = startingValue;
        Lock = new object();
    }

    public Shared()
        : this(default(T))
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,C# 不会让我。文档指出T必须是引用类型或原语之一(int、bool 等)。我唯一关心的类型是引用类型和 bool。显然,我不能使用无界类型T。有没有办法让我完成这项工作?甚至可以为此添加约束以使其作为Shared<bool>? 我什至不允许将其他结构类型标记为 volatile。:(

如果没有可能的方法将其标记为 volatile,当多个线程试图读取此值时,我是否还有其他保证不会对其进行优化?

c# generics

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

可以使用mingw来编译Windows Vista或7的代码吗?

我注意到Windows开发中包含的标题(例如Windows.h)主要适用于Windows XP及更早版本.我无法调用诸如GetTickCount64因为它们需要Windows Vista或更高版本等功能.我有Windows 7,但这些功能仍然缺席.我知道链接到这些函数会增加对我的程序的要求,我很好.

有人对这个有经验么?我可以使用较新的Win32 API和mingw吗?怎么样?

c++ winapi mingw windows-vista windows-7

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

在Windows XP中手动更新shell32.dll是安全/实用的吗?

我正在运行我的开发环境Windows XP.我需要访问函数SHGetKnownFolderPath.我的团队建议我只是用他们更新我的shell32.dll并更新我的头文件.

该功能记录在此处:http: //msdn.microsoft.com/en-us/library/bb762188%28v=vs.85%29.aspx

现在,了解这个问题的重点是通过复制粘贴手动覆盖/更新shell32.dll的可行性.请不要回答上述功能的变通方法/替代方案.这不是这个问题的重点.

简单地使用Windows 7版本的shell32.dll并粘贴到我的(在XP中)是否安全?我害怕测试它,因为害怕谋杀我的整个操作系统.我不知道所有Windows的库相互依赖性以及这是否兼容.听起来非常不稳定,但这就是我提出的建议.

c windows winapi

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

重置旋转矩阵而不会丢失比例

我有一个案例,我需要一种方法将OpenGL中的模型矩阵旋转到绝对值.大多数rotate()方法将旋转添加到当前矩阵乘以新旋转的当前矩阵.我需要将模型矩阵旋转到某个值而不保持旧的旋转.我目前所做的是销毁当前的矩阵以进行识别.然后根据我之前设定的比例变量从头开始计算其比例.然后将它与从四元数获得的旋转矩阵相乘,并最终再次平移它.

在我看来,这项任务的计算量太多了.是否有更短的方法来重置矩阵旋转,同时保持其比例和平移部分完好无损?这是我当前的方法(Java):

 public void rotateTo3( float xr,float yr,float zr) {



 Quaternion  xrotQ=   Glm.angleAxis( (xr),Vec3.X_AXIS);
 Quaternion  yrotQ=   Glm.angleAxis( (yr),Vec3.Y_AXIS);
 Quaternion  zrotQ=   Glm.angleAxis( (zr),Vec3.Z_AXIS);
  xrotQ= Glm.normalize(xrotQ);
  yrotQ= Glm.normalize(yrotQ);
  zrotQ= Glm.normalize(zrotQ);

  Quaternion acumQuat=new Quaternion();
  acumQuat= Quaternion.mul(xrotQ,yrotQ);
  acumQuat= Quaternion.mul(acumQuat,zrotQ);


  Mat4 rotMat=new Mat4(1);
  rotMat=Glm.matCast(acumQuat);

    _model = new Mat4(1);




   scaleTo(_scaleX, _scaleY, _scaleZ);//reconstruct scale
   _model = Glm.translate(_model, new Vec3(_pivot.x, _pivot.y, 0));


  _model=rotMat.mul(_model); ///add new rotation


   _model = Glm.translate(_model, new Vec3(-_pivot.x, -_pivot.y, 0));



   translateTo(_x, _y, _z);//reconstruct translation
Run Code Online (Sandbox Code Playgroud)

}

opengl math rotation matrix

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

是否可以通过方法名称约束类型?

例如,类型AA,BBCC所有都有一个方法Close().它们没有实现任何类型的接口void Close().是否可以根据具有调用方法的类型进行类型约束Close

public static void CloseThis<T>(this T openObject) where T : Closeable
{
    openObject.Close();
}
Run Code Online (Sandbox Code Playgroud)

c# generics

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

标签 统计

c# ×2

c++ ×2

generics ×2

winapi ×2

c ×1

math ×1

matrix ×1

mingw ×1

opengl ×1

primitive ×1

rotation ×1

templates ×1

windows ×1

windows-7 ×1

windows-vista ×1