Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ visualstudio失踪;以前*_C++_Oop_Visual Studio 2013_Header Files - Fatal编程技术网

C++ visualstudio失踪;以前*

C++ visualstudio失踪;以前*,c++,oop,visual-studio-2013,header-files,C++,Oop,Visual Studio 2013,Header Files,我正在研究视觉中的Blake算法,但我有一个小问题 我的Block.h文件 #pragma once #include<string> #include<bitset> #include<iostream> // DEBUG #include"BlocksContainer.h" using namespace std; class Block { public: static void CreateBlocks(string);

我正在研究视觉中的Blake算法,但我有一个小问题

我的
Block.h
文件

#pragma once
#include<string>
#include<bitset>
#include<iostream> // DEBUG
#include"BlocksContainer.h"

using namespace std;

class Block {
    public:
        static void CreateBlocks(string);
        static string CreatePadding(int);
        Block(string);
    protected:
        string BlockContent;
};
#pragma once
#include"Block.h"

class BlocksContainer {
    public:
        int GetLength(void);
        Block* GetNBlock(int);
    BlocksContainer(Block**, int);
    protected:
        Block** Blocks;
        int Length;
};
我不知道为什么,但VisualThrow我
blockscontainer.h(7):错误C2143:语法错误:缺少“;”在“*”之前

<>我是C++的NeWBY,我找不到错误。在堆栈中,我找到了类似缺少
的解决方案在类声明之后,但我有分号。

您不需要:

 #include"BlocksContainer.h"
在block.h内部,此行导致block在BlocksContainer.h内部未定义,因为编译器尚未看到它

如果您确实需要这种相互依赖的头文件,您可以这样声明类:

class Block;
在这样的语句之后,您可以使用Block类,但只能在指针或引用之类的复合语句中使用,这意味着
Block*GetNBlock(int)将编译。

您不需要:

 #include"BlocksContainer.h"
在block.h内部,此行导致block在BlocksContainer.h内部未定义,因为编译器尚未看到它

如果您确实需要这种相互依赖的头文件,您可以这样声明类:

class Block;

在这样的语句之后,您可以使用Block类,但只能在指针或引用之类的复合语句中使用,这意味着
Block*GetNBlock(int)将编译。

#包括“BlocksContainer.h”是问题所在,它在声明之前使用了Block。@HansPassant那么我必须在哪里声明它呢?您的头文件是相互依赖的。这会导致在尝试引用块时未声明块
。根据您发布的代码,您可以从BlocksContainer.h中删除
#include“Block.h”
。@stachu remove
#从Block.h中删除
#include“BlocksContainer.h”
,和/或在主文件中使用头中的命名空间包含“BlocksContainer.h”而不是“Block.h”
,这是一种令人憎恶的做法。还有,为什么要实现自己的动态数组?#问题在于包含“BlocksContainer.h”,它在声明之前使用Block。@HansPassant那么我必须在哪里声明它呢?您的头文件是相互依赖的。这会导致在尝试引用块时未声明块
。根据您发布的代码,您可以从BlocksContainer.h中删除
#include“Block.h”
。@stachu remove
#从Block.h中删除
#include“BlocksContainer.h”
,和/或在主文件中使用头中的命名空间包含“BlocksContainer.h”而不是“Block.h”
,这是一种令人憎恶的做法。另外,您为什么要实现自己的动态数组?我在
Block.h
中包含
blockscocontainer.h
(无论如何构造方法错误),但谢谢您的建议!我在
Block.h
中包含
BlocksContainer.h
(无论如何构造方法错误),但感谢您的建议!