在过去的几个小时里,我拼命想弄清楚出了什么问题,但是徒劳无功:
我有以下情况:我有一个工作标题,我决定将其中的部分移动到另一个新文件。
基本上我现在有:
FILEA
......
class A;
.....
文件B
#include FileA
.....
A B;
.....
但是变量A
根本无法在fileB中被识别。
我做错了什么?
按照您的要求提供真实代码和更多详细信息: 让我更具体一点 我正在使用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:语法错误:缺少';'在标识符“值”之前
(我有很多,这只是一个例子)
对不起,如果从原始问题中你理解了一些不同的东西,并再次感谢
答案 0 :(得分:1)
在文件A中,您只有该类的前向声明:
class A;
这意味着您没有完整的类定义,因此无法使用它的实例 - 但您可以使用指针。
您需要发布更多代码以获得更多帮助(格式正确)。
答案 1 :(得分:1)
看看你的问题的描述我随机猜测 - 你是否偶然在这两个文件中放置了相同的保护?在这种情况下,包含A根本不起作用。