小编Jon*_*art的帖子

仅接受某个类的继承人的模板函数

在 C++ 中,假设我有一些 class mom。我知道我可以创建一个接受任何类的模板函数,例如:

template <class T> void Iacceptanything(T x)
{
  // Do something
}
Run Code Online (Sandbox Code Playgroud)

现在,这很好用,但我想创建一个更严格的模板类,它接受T从 class 继承的任何类型mom。我考虑过让函数接受mom作为唯一的参数类型,但在该函数中,我需要使用参数构建一个模板对象,因此我需要保留它的类型(即,我的对象不应该被“修剪”为只是它是 ) 的继承人mom

我需要的是这样的:

template <class T:mom> void Iacceptonlysonsofmom(T x)
{
    // Do something
}
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

c++ inheritance templates

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

如何将Oracle .DMP文件导入SQL Server?

我有一个.dmp文件(oracle数据),我必须将此文件导入SQL Server 2008 R2.我试过谷歌但没有明确的解决方案.Oracle在其他机器上,而SQL Server在其他机器上.此.DMP文件只包含表和数据.
有什么机构有什么想法?

sql-server oracle import dmp

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

为什么我用这段代码得到了一个错误的错误?

为什么编译器会在指定的行上抱怨?

class C
{
    std::string s;
public:
    C() { s = "<not set>";}
    ~C() {}
    void Set(const std::string ss) { s=ss; }
    const std::string Get() { return s; }

    C &operator=(const C &c) { Set(c.Get()); return *this; }
    //error: passing ‘const C’ as ‘this’ argument of ‘const string C::Get()’
    // discards qualifiers [-fpermissive]


    //C &operator=(C &c) { Set(c.Get()); return *this; }   <-- works fine

};
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors

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

哪个手册页描述了ld链接器脚本语法?

我很确定ld链接器脚本语法有一个手册页,但我找不到它.

ld

3
推荐指数
2
解决办法
1903
查看次数

x86堆方法

我试图了解这个x86指令正在做什么:

 movl %eax, heap(,%rdx,4)
Run Code Online (Sandbox Code Playgroud)

这就是我认为它的作用:

将eax中的值移动到内存中从标签堆开始的区域,并从rdx中的值移位字节.

它是否正确?

谢谢

x86 assembly x86-64

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

"int j =(strlen)(str)"是什么意思?

我发现下面的代码从bstrlib,在bstrlib.c(例如,线193):

bstring bfromcstr (const char * str) {
    bstring b;
    int i;
    size_t j;

    if (str == NULL) return NULL;
    j = (strlen) (str);
    i = snapUpSize ((int) (j + (2 - (j != 0))));
    if (i <= (int) j) return NULL;

    b = (bstring) bstr__alloc (sizeof (struct tagbstring));
    if (NULL == b) return NULL;
    b->slen = (int) j;
    if (NULL == (b->data = (unsigned char *) bstr__alloc (b->mlen = i))) {
        bstr__free (b);
        return NULL; …
Run Code Online (Sandbox Code Playgroud)

c string

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

从禁用的文本框复制到剪贴板

我禁用了TextBox,但希望用户仍能将其内容复制到剪贴板.但是,如果未设置IsEnabled,则不允许复制/粘贴.

有没有办法实现这个目标?

c# wpf

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

使用`$ CI_JOB_TOKEN`“包含”私有项目文件

到目前为止,我可以通过PAT进行身份验证并包含外部CI脚本,但是$CI_JOB_TOKEN更安全的方法是使用访问权限,因为它更安全且受限制。我正在研究是否可以通过这种方式完成-

include 'https://gitlab-ci-token:${CI_JOB_TOKEN}@raw-file-url'

我曾尝试在虚拟脚本作业中以这种格式卷曲,但是无法获取文件。

显然,可以使用文件API和$ CI_JOB_TOKEN(https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2346/diffs)导入外部脚本,但是我正在研究include功能是否也支持此功能。任何有关如何实现这一目标的建议都值得赞赏。

gitlab

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

RSA.SignHash SHA512 和 SHA256 给出相同的签名长度

奇怪,但代码的签名数组长度是相同的:

using (RSA rsa = certifiateToUse.GetRSAPrivateKey())
{
    byte[] bytesData = Encoding.UTF8.GetBytes(input);
    byte[] hash512 = rsa.SignHash(bytesData, HashAlgorithmName.SHA512, RSASignaturePadding.Pss);
    byte[] hash256 = rsa.SignHash(bytesData, HashAlgorithmName.SHA256, RSASignaturePadding.Pss);
}
Run Code Online (Sandbox Code Playgroud)

hash512 和 hash256 的数组长度均为 512。我找不到一个合理的答案。也许我错过了一些明显的东西?我预计它的长度分别为 512 和 256 字节。

c# hash cryptography rsa

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

difflib 无法正确找到操作码

我在 python 的 difflib 库中遇到了一个非常奇怪的问题。我有两个字符串,如下所示,我get_opcodes像这样运行它们:

import difflib

str1 = "MatrixElement(MatrixSymbol('Btd', Integer(11), Integer(11)), Integer(0), Integer(9))), Mul(Float('1.0', precision=24), MatrixElement(MatrixSymbol('Btd', Integer(11), Integer(11)), Integer(0), Integer(10))))"
str2 = "MatrixElement(MatrixSymbol('Btd', Integer(11), Integer(11)), Integer(1), Integer(9))), Mul(Float('1.0', precision=24), MatrixElement(MatrixSymbol('Btd', Integer(11), Integer(11)), Integer(1), Integer(10))))"
difflib.SequenceMatcher(None, str1,str2).get_opcodes()
Run Code Online (Sandbox Code Playgroud)

仅在这个具体示例中,diff 的输出如下所示,这显然是错误的。

[('equal', 0, 69, 0, 69),
 ('replace', 69, 70, 69, 70),
 ('equal', 70, 188, 70, 188),
 ('insert', 188, 188, 188, 201),
 ('equal', 188, 190, 201, 203),
 ('replace', 190, 206, 203, 206)]
Run Code Online (Sandbox Code Playgroud)

正确的输出不应包含insert操作码,因为没有添加任何新内容。

这可能是 difflib 中的一个错误吗?

python difflib

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

标签 统计

c# ×2

c++ ×2

assembly ×1

c ×1

compiler-errors ×1

cryptography ×1

difflib ×1

dmp ×1

gitlab ×1

hash ×1

import ×1

inheritance ×1

ld ×1

oracle ×1

python ×1

rsa ×1

sql-server ×1

string ×1

templates ×1

wpf ×1

x86 ×1

x86-64 ×1