C ++包括不起作用

时间:2011-12-11 14:53:32

标签: c++ include

在过去的几个小时里,我拼命想弄清楚出了什么问题,但是徒劳无功:

我有以下情况:我有一个工作标题,我决定将其中的部分移动到另一个新文件。

基本上我现在有:

FILEA

......
class A;
.....

文件B

#include FileA
.....
A B;
.....

但是变量A根本无法在fileB中被识别。

  • 所有定义都在同一名称空间
  • 没有拼写错误
  • 我正在使用升级库和调试模式我得到:“intelisence:不兼容的构建选项”(不知道这是否与我的问题有关)
  • 在查看代码时,visual studio识别所有类型(即当按下文件B中的类型“A”时,visual studio会识别它)。

我做错了什么?

按照您的要求提供真实代码和更多详细信息: 让我更具体一点 我正在使用ifndef方法,可能这导致了混乱,但我不明白为什么因为fileB是唯一包含fileA的人

代码本身如下:

    #ifndef MERKLE_BASICS_HPP
    #define MERKLE_BASICS_HPP
    #include "FullProofConsumer.hpp"
    #include <openssl\sha.h>
    namespace PCP_Project{
typedef unsigned char* HashDigest;
//Forward Declarations
HashDigest hashTwoElements(HashDigest,HashDigest);
HashDigest hash_GF2E_Element (GF2E);
HashDigest createZeroCommitment();
//The definition of the hashDigest type, for now its just long. Will be probably       replacedlater. 
//typedef unsigned char* HashDigest;

     }
    #endif

然后在另一个文件中:

                #ifndef MERKLE_CONSUMER
                #define MERKLE_CONSUMER
                #include <fstream>
                #include "MerkleBasics.hpp"
                 namespace PCP_Project{
                 ......

                 HashDigest Value;
                  ...

编译错误: 错误273错误C2146:语法错误:缺少';'在标识符“值”之前
(我有很多,这只是一个例子) 对不起,如果从原始问题中你理解了一些不同的东西,并再次感谢

2 个答案:

答案 0 :(得分:1)

在文件A中,您只有该类的前向声明:

class A;

这意味着您没有完整的类定义,因此无法使用它的实例 - 但您可以使用指针。

您需要发布更多代码以获得更多帮助(格式正确)。

答案 1 :(得分:1)

看看你的问题的描述我随机猜测 - 你是否偶然在这两个文件中放置了相同的保护?在这种情况下,包含A根本不起作用。