小编nic*_*yte的帖子

一个在类外部是只读的属性,但对类成员是可读写的

我想在我的班级中有一个可读的属性,但不能通过类外部的代码直接修改.基本上,相当于从C++中的方法返回const引用到成员.

写下这些内容:

class test {
    private readonly x_ = new Uint8Array([0, 1, 2]);
    public x() { return this.x_;}
}
Run Code Online (Sandbox Code Playgroud)

不起作用,因为以下代码仍然编译:

let a = new test();
a.x()[0] = 1;
Run Code Online (Sandbox Code Playgroud)

实现这一目标的正确方法是什么?

typescript

8
推荐指数
2
解决办法
1429
查看次数

是什么导致阴影痤疮?

我一直在阅读阴影贴​​图,并找到了以下教程:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/

直到作者开始讨论"阴影痤疮"神器时,我才有意义.他们用下图解释原因(没有文字): 在此输入图像描述

我仍然很难理解究竟是什么原因导致阴影痤疮以及为什么添加偏见会修复它.

似乎阴影贴图的分辨率对痤疮没有影响.之后怎么样了?也许漂浮精度,还是别的?

opengl graphics rendering shadow-mapping

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

在同一赋值表达式中使用std :: move(object)和object.method().

以下表达式的结果是否定义明确?它是什么?

hash_map[object.key()] = std::move(object);

我不确定std::move零件的影响是否会在零件之前或之后发生object.key(),因此我的问题.

c++ move-semantics

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

如何确定std :: future是否具有值?

请注意,这与调用不同valid()valid()指示将来是否完全具有有效的共享状态,但是我想知道的是是否已设置了将来的值(即通过std::promise::set_value)。

有一种wait_for方法,但是我根本不希望调用线程阻塞,我只想检查值的存在。从理论上讲,我可以将wait_for持续时间设为零,但我不知道这是否实际上是这样做的首选方式,而且我不确定wait_for以零持续时间调用时的预期行为是什么。

c++ multithreading future c++11

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

为什么有些WinAPI函数需要传递的结构大小作为参数?

例如,考虑一下SendInput.签名如下所示:

UINT WINAPI SendInput(
  _In_ UINT    nInputs,
  _In_ LPINPUT pInputs,
  _In_ int     cbSize
);
Run Code Online (Sandbox Code Playgroud)

文件说:

cbSize [in]类型:int INPUT结构的大小(以字节为单位).如果cbSize不是INPUT结构的大小,则该函数将失败.

由于该函数已经使用了INPUT结构(并且可能对其各种字段做了一些事情),所以它不应该预先知道结构的大小吗?

我可以想象的唯一原因是,这是一种奇怪的向后兼容性技巧,可以使较旧的库二进制文件与可能在结构末尾引入新字段的较新头文件兼容.

c windows winapi

4
推荐指数
2
解决办法
421
查看次数

在导出的类中使用 std::unique_ptr

我在 DLL 中有一个类,如下所示:

#ifdef LIB_EXPORT
#define LIB_API __declspec(dllexport)
#else
#define LIB_API __declspec(dllimport)
#endif

...

class LIB_API MyClass {
public:
  // ...public interface...
private:
 // ...some private fields...
 std::unique_ptr<OtherClass> otherPtr_;
};
Run Code Online (Sandbox Code Playgroud)

现在,我认为这可能是一个问题:如果客户端代码使用稍微不同的 unique_ptr 版本,则 MyClass 对象的内存布局实际上与 DLL 中的代码可能期望的不同。

我真的不想诉诸 Pimpl 成语来隐藏unique_ptr公共标题。我可能会推出自己的简化版本unique_ptr(我只需要其功能的一个子集,例如我不需要自定义删除器)。但是,在我尝试之前,有没有其他方法可以解决这个问题?

c++ dll

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