C++包含不起作用
C++ including doesn't work
在最后的几个小时里,我拼命地想弄清楚是什么出了问题,但一无所获:
我有以下场景:我有一个工作头文件,我决定将其中的部分移动到另一个新的文件中。
现在我有:
FileA
......
class A;
.....
文件B
#include FileA
.....
A B;
.....
但是变量A
在fileB中根本没有被识别。
- 所有的定义都在同一个命名空间 下
- 没有拼写错误
- 我在boost库和调试模式下使用我得到:"智能:不兼容的构建选项"(不知道这是否连接到我的问题)
- 当查看代码时,visual studio识别出所有类型(即当按下文件B中的"A"类型时,visual studio识别出它)。
我做错了什么?
以下是您要求的真实代码和进一步的细节:让我说得更具体一些我正在使用ifndef方法,这可能会导致混乱,但我不明白为什么,因为fileB是唯一一个包含fileA的
代码本身是这样的:
#ifndef MERKLE_BASICS_HPP
#define MERKLE_BASICS_HPP
#include "FullProofConsumer.hpp"
#include <opensslsha.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;
...
和编译错误:语法错误:标识符"Value"之前缺少";"
(我有很多这样的例子,这只是一个例子)很抱歉,如果你从原来的问题中理解了一些不同的东西,再次感谢
看起来像在文件A中,你只有一个类的前向声明:
class A;
这意味着你没有一个完整的类定义,因此不能使用它的实例——但是你可以使用指针。
你必须发布更多的代码来获得更多的帮助(正确格式化)。
看看你的问题的描述,我随机猜测-你是否偶然地在两个文件中放置了相同的INCLUDE警卫?在这种情况下,包括A将无法工作。
相关文章:
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- 无法打开包含文件'Graphics.hpp'没有这样的文件或目录,Visual Studio的其他包含不起作用
- 其他包含目录不起作用
- std::包含 std::函数回调的多个包装器的向量不起作用
- 提升库无法在C++中工作,包含目录不起作用
- 在 C++ 中,.h 文件包含文件但不起作用
- Visual Studio 2015 中的其他包含目录不起作用
- C++ 包含防护不起作用,错误
- C++ -- 指向结构数组的指针,该数组包含指向不起作用的类数组的指针
- 在我试图创建一个载体中包含C 中的唯一元素的矢量时,发现不起作用
- 包含标准标头后,Vim 代码补全不起作用
- Android NDK 中的某些 c++ 包含文件不起作用
- 如果向量包含重复项,则此函数应返回 true。知道为什么它不起作用吗?
- 如果函数包含在命名空间中,则"go to beginning of the function"不起作用 (C++)
- Qt .pro文件:添加包含"include"目录的路径不起作用
- 运算符 类对象的重载在访问包含它的向量元素时不起作用
- 包含标头不起作用
- 在使用包含类的动态实例化后调用 c++ 重载运算符 [] 似乎不起作用
- 对象的 C++ 向量,包含动态分配的内存 - "擦除"不起作用
- 当用c++编写数组时,我尝试将数组包含到另一个类中,但不起作用