将代码从一个类移动到新类时的问题?

时间:2009-10-28 15:52:56

标签: c++ class

我有一些生活在wincrypt.h课程中的解密代码(使用FileReader.cpp)。我试图隔离代码并将此解密方法推送到MyCrypt.cpp类。然而,在移动它时,我遇到了一堆我以前没有遇到过的错误。对于每个wincrypt.hwindows.h特定命令,我收到“未找到标识符”或“未声明的标识符”。

什么给了!

更多细节..

示例错误:

  

错误C2065:'HCRYPTPROV':未声明   标识符

     

错误C3861:'CryptDecrypt':   找不到标识符

我包括windows.h和wincrypt.h,就像我在FileReader.cpp中一样。

#include "MyCrypt.h"
#include <windows.h>
#include <wincrypt.h>

MyCrypt.h定义为:

#pragma once

class MyCrypt
{
public:
    static char *DecryptMyFile(char *input, char *password, int size, int originalSize) ;

private:
    static const DWORD KEY_LENGTH = 128;
}

如果我重新安排我的包含文件,我会收到以下错误:

  

错误C2628:'MyCrypt'后跟   'char'是非法的(你忘记了吗?   ';'?)错误C2556:'MyCrypt   * MyCrypt :: DecryptMyFile(char *,char *,int,int)':重载函数的区别仅在于'char的返回类型   * MyCrypt :: DecryptMyFile(char *,char *,int,int)

但是在我的代码中没有任何地方使用它重新定义,它说的是..

5 个答案:

答案 0 :(得分:2)

检查MyCrypt.h并确保在结束括号后有;。当我错过这个时,我已经看到了一些相当奇怪的错误信息。您发布的样本中缺少它。

答案 1 :(得分:2)

您在课堂申报后忘记了分号了吗?

答案 2 :(得分:1)

听起来你移出FileReader.cpp的代码要么是引用MyCrypt.cpp中不存在的那个类的成员变量,要么是FileReader.cpp中#included的那些未包含在MyCrypt.cpp中的方法

答案 3 :(得分:0)

听起来你现在在新的MyCrypt.cpp文件中缺少一些#include,例如windows.h和wincrypt.h,但是我们需要实际的错误才能特别有帮助。

答案 4 :(得分:0)

一些想法:

  • 你是在没有先引用对象的情况下调用方法(因为它们在旧类中并且现在被移动了,也许你忘了通过新类中的指针调用它们了吗?)
  • 你可以尝试改变包含语句的顺序。
  • 您使用预编译的标头吗?您可以尝试不看是否能解决问题。