小编Agn*_*ian的帖子

当派生类调用基类的纯虚函数时,为什么g ++不抱怨?

我有一个Base纯虚函数的类f().另一类Derived来源于Base.我f()从内部打电话Derived.使用g ++,我从链接器中得到一个错误.

[agnel@dooku tmp]$ g++ pure_virtual_function_call.cpp 
/tmp/ccGQLHi4.o: In function `Derived::f()':
pure_virtual_function_call.cpp:(.text._ZN7Derived1fEv[_ZN7Derived1fEv]+0x14): undefined reference to `VirtualBase::f()'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

在我看来,错误是由链接器捕获的.为什么编译器没有报告此错误?为什么要留给链接器?

这是代码:

#include <iostream>

using namespace std;

class VirtualBase {
public:
    virtual void f() = 0;
};

class Derived : public VirtualBase {
public:
    void f(){
        VirtualBase::f();
        cout << "Derived\n" ;
    }
};


int main(){
    Derived d;
    d.f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ linker g++ ld pure-virtual

5
推荐指数
2
解决办法
624
查看次数

std:sort vs insert into std :: set

我正在阅读cin中的一些线段.每个线段由起点和终点表示.2D.X和Y.

输入未排序.它是随机顺序的.(更新:但是我需要它们首先按X排序然后按Y排序)

我可以读取所有段,将它们存储在向量中,然后调用std :: sort.另一方面,我可以创建一个空的std :: set,并在它到达时插入每个段.该集将自动维护排序顺序.这两种方法中哪一种更有效?

更新:输入的总大小(段数)是事先已知的.

c++ sorting stl std set

5
推荐指数
2
解决办法
5298
查看次数

即使使用相同的密钥,加密输出也总是不同

我正在尝试将密码存储在我想要检索以供日后使用的文件中.Hashing不是一个选项,因为我需要密码才能连接到远程服务器以供日后使用.

以下代码运行良好,但每次创建不同的输出,即使键是相同的.这很糟糕,因为当应用程序关闭并重新启动时,我将无法再检索到我的密码.如何将密码存储在文件中并在以后检索?

public class EncyptDecrypt {

    static System.Security.Cryptography.TripleDESCryptoServiceProvider keyProv = new System.Security.Cryptography.TripleDESCryptoServiceProvider();

    public static System.Security.Cryptography.TripleDESCryptoServiceProvider KeyProvider {
        get {
            keyProv.Key = new byte[] { /* redacted with prejudice */ };
            return keyProv;
        }
    }

    public static string Encrypt(string text, SymmetricAlgorithm key) {

        if (text.Equals(string.Empty)) return text;

        // Create a memory stream.
        MemoryStream ms = new MemoryStream();

        // Create a CryptoStream using the memory stream and the
        // CSP DES key.
        CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);

        // Create a …
Run Code Online (Sandbox Code Playgroud)

c# encryption cryptography

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

新Vista功能指南

我是一名MFC程序员.我刚刚体验了Vista(在VPC上......是的,我迟到了).我应该在未来几天对事情进行深入评估.随便看看,我注意到两个主要的变化:

  • 外壳是新的
  • 用户访问控制
  • 事件查看器已更改(想了解更多相关信息)

从程序员的角度来看,我应该注意哪些其他新功能?

documentation mfc windows-vista

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

多边形的孔

我需要创建一个立方体的3D模型,在一个面的中心打出一个圆形孔,完全穿过立方体到达另一侧.我能够为面孔和孔生成顶点.

四个面(不受孔影响)可以建模为单个三角形条.孔的内部也可以建模为单个三角形条.

如何为有孔的面生成索引缓冲区?是否有标准算法来执行此操作?

我正在使用Direct3D,但欢迎来自其他地方的想法.

algorithm 3d graphics geometry

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

识别此算法:插槽和桩

我有一些直线排列的插槽和钉子.栓可以移动,需要每个都移动到一个槽.只有在采取所有钉子时,才能将槽留空.移动挂钉时,不允许穿过另一个挂钉.换句话说,必须保持钉的顺序.优选地,所有钉子移动的总距离应保持最小.应尽可能将挂钉置于最近的可用插槽中.

我想知道的是:什么样的数学领域处理这样的问题?处理类似问题的任何众所周知的算法的名称是什么?我正在寻找Google饲料.一些关键字.

+--oooo-+--+---+---o--+------+--+-ooo+o-+-------o--+-----o-o-+-o

+ - Slots
o - Pegs
Run Code Online (Sandbox Code Playgroud)


编辑:我认为这种可视化更有意义.它们是两个需要排列的独立轨道.

Slots: +-------+--+---+------+------+--+----+--+----------+---------+--
Pegs:  ---oooo------------o--------------ooo-o---------o--------o-o---o
Run Code Online (Sandbox Code Playgroud)

编辑:只是想明确说明插槽的数量可以大于,小于或等于挂钩的数量.

algorithm math

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

在缓存外部生成本机映像

我想NGEN.EXE在创建安装程序之前使用以生成程序集的本机映像.我希望这能保持我的二进制文件Reflector.我对此是否正确?

我刚刚了解到所有本机映像现在都存储在本机映像缓存中.有没有办法获得本机二进制文件,然后我可以使用安装程序打包?另一方面,生成本机图像后是否可以摆脱原始组件?

编辑:我正在使用一个应用程序,它与服务器通信时使用硬编码密钥进行加密.使用.NET,人们可以轻松地将钥匙放在钥匙上.

.net gac ngen

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

在Windows上使用音频检测进程

如何在Windows计算机上检测哪些进程正在播放音频?换句话说,我如何枚举使用我的声卡的进程?

windows audio

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

打印机仿真器,PDF编写器等

我将很快开始研究我正在开发的产品的"打印"和"打印预览"功能.我没有打印机,也没有购买打印机的意图.我正在寻找可以用来测试我的打印代码的任何免费软件.

我可以用来模拟打印机的最佳免费选项是什么?我在Windows上使用GDI +,但平台独立的选项,如PDF编写者,非常受欢迎.

printing pdf gdi emulation

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

解释HRESULT的声明/定义

我只是看了HRESULTVS2008 中的定义.WinNT.h有以下行:

typedef __success(return >= 0) long HRESULT;
Run Code Online (Sandbox Code Playgroud)

究竟是什么意思?它对我未经训练的眼睛看起来甚至不像C或C++

c c++ winapi hresult visual-studio-2008

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