我知道这一点const,并且volatile在 C++ 规范中被称为“cv 限定符”,例如[basic.type.qualifier]。
现在我有这段代码(godbolt)无法编译。
#include <string>
class Dummy
{
std::string member{"test"};
public:
std::string const && foo() &&
{ return std::move(member); }
};
int main()
{
Dummy d;
std::string s = d.foo();
}
Run Code Online (Sandbox Code Playgroud)
它无法编译,因为w它是一个 LValue 并且foo()仅针对 RValue 存在。这很好,也是意料之中的。
但让我们看一下错误消息:
<source>: In function 'int main()':
<source>:14:26: error: passing 'Dummy' as 'this' argument discards qualifiers [-fpermissive]
14 | std::string s = d.foo();
| ~~~~~^~
<source>:7:26: note: in call to 'const …Run Code Online (Sandbox Code Playgroud) 我正在开发一个SDI MFC应用程序,其中有一些自定义按钮以自定义方式绘制或者图像加载在它们之上.当正在运行的应用程序连续重新调整大小约5到10分钟时,它会因错误"未找到所需资源"而崩溃.
我已经彻底检查了代码,所有的GetDC()呼叫都跟着ReleaseDC()电话.此外,每当我DC.SelectObject(&newBrush)打电话然后恢复旧笔时,我总是保存旧的GDI对象(例如,oldBrush)DC.SelectObject(&oldBrush).
什么其他可能导致此错误的任何提示?
编辑:我使用程序Deleaker来查找程序中的GDI泄漏并删除导致泄漏的那些GDI对象.
编辑:这是AfxThrowResourceException的调用堆栈:
mfc110ud.dll!AfxThrowResourceException() Line 1353 C++
mfc110ud.dll!CWindowDC::CWindowDC(CWnd * pWnd) Line 1022 C++
mfc110ud.dll!CMFCToolBarImages::PrepareDrawImage(tagAFXDrawState & ds, CSize sizeImageDest, int bFadeInactive) Line 1219 C++
mfc110ud.dll!CMFCToolBarImages::DrawEx(CDC * pDC, CRect rect, int iImageIndex, CMFCToolBarImages::ImageAlignHorz horzAlign, CMFCToolBarImages::ImageAlignVert vertAlign, CRect rectSrc, unsigned char alphaSrc) Line 1729 C++
mfc110ud.dll!CMFCControlRenderer::FillInterior(CDC * pDC, CRect rect, CMFCToolBarImages::ImageAlignHorz horz, CMFCToolBarImages::ImageAlignVert vert, unsigned int index, unsigned char alphaSrc) Line 470 C++
mfc110ud.dll!CMFCControlRenderer::FillInterior(CDC * pDC, CRect rect, …Run Code Online (Sandbox Code Playgroud) 当我尝试使用windbg时,
.load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll
Run Code Online (Sandbox Code Playgroud)
完美地加载SOS扩展.
但是当我尝试使用建议的模式时
.loadby SOS
Run Code Online (Sandbox Code Playgroud)
要么
.loadby sos.dll
Run Code Online (Sandbox Code Playgroud)
我只能收到一条错误消息"扩展字符串中的语法错误".
我试图用Google搜索此错误消息,但没有找到任何有用的信息.
有什么建议 ?
如何比较xxxx格式的版本字符串
例如,相比3.0.1750于3.0.1749
含义
if (3.0.1750 > 3.0.1749)
{
// do this
}
Run Code Online (Sandbox Code Playgroud) 当我输入“Hello World!”时 它被加密为“KNUUXWZXAUMX”如果我将其放入解密代码中,解密将返回为“HKRRUTWUXRJU”。
由于这是一个高中项目,因此需要一些必需的函数等。我必须在代码中使用函数、列表和循环。我稍后还会提出其他要求,例如要加密的大写字母、数字和标点符号。
我的代码是:
text = (input('Add some text: '))
def toList(text):
text.split()
return text
def encrypt(text):
shift = 3
text1 = text
encryption = ""
for x in text1:
xCode = ord(x)
xGuide = xCode - ord("A")
newGuide = (xGuide + shift) % 26
newCode = newGuide + ord("A")
newLetters = chr(newCode)
encryption = encryption + newLetters
print("encrypted text: ", encryption)
print("text:", text1)
encrypt(text)
cipherText = (input('Add some encrypted text: '))
def decrypt(cipherText):
shift = 3
cipherText1 = …Run Code Online (Sandbox Code Playgroud) 我想要生成大量 (10 TB) 看似随机但可预测的数字。生成速度应该超过快速SSD,所以我想要3000 MB/s到4000 MB/s。
文件写入后,将再次读取数字并重新生成,以便进行比较。整个程序应该检查磁盘。
目前我正在考虑哈希。为了可预测性,要散列的数据只是一个 8 字节数字 ( ulong)。所以在二进制文件中它看起来像这样
<32 bytes of SHA256(0)> <32 bytes of SHA256(1)> ...
Run Code Online (Sandbox Code Playgroud)
我不认为我可以使用带种子的随机数生成器,因为我无法告诉随机数生成器生成第n个数字。但我可以告诉 SHA256 算法计算 SHA256(n)。
我使用 SHA256 算法对 128 MB 数据进行了测试,如下所示:
Parallel.For(0, 128 * 1024 * 1024 / 32, // 128 MB / length of the hash
a => {
var sha = SHA256.Create();
sha.Initialize();
var ba = new byte[8];
ba[0] = (byte)((long)a >> 0 & 0xFF);
ba[1] = (byte)((long)a >> 8 & 0xFF);
ba[2] = (byte)((long)a …Run Code Online (Sandbox Code Playgroud) 这是我正在使用的代码:
class Program
{
static StandardRoom room55 = new StandardRoom(55);
static StandardRoom room45 = new StandardRoom(45);
static List<StandardRoom> roomMap = new List<StandardRoom>() { room45, room55 };
static void Main(string[] args)
{
foreach(StandardRoom room in roomMap)
{
Console.WriteLine(room.roomId);
}
}
class StandardRoom
{
public static int roomId;
public StandardRoom(int roomNum)
{
roomId = roomNum;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
使用实例引用无法访问成员"room.roomId"; 用类型名称来限定它.
我真的不确定如何解决这个问题.