我正在Visual中研究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;
};
我的
BlocksContainer.h
文件#pragma once
#include"Block.h"
class BlocksContainer {
public:
int GetLength(void);
Block* GetNBlock(int);
BlocksContainer(Block**, int);
protected:
Block** Blocks;
int Length;
};
我不知道为什么,但是视觉把我扔了
blockscontainer.h(7): error C2143: syntax error : missing ';' before '*'
我是C ++中的newby,找不到错误。在Stack中,我发现了类声明后缺少
;
的解决方案,但是我有分号。 最佳答案
您不需要:
#include"BlocksContainer.h"
在block.h内部,此行导致Block在BlocksContainer.h内部未定义,因为编译器尚未看到它。
如果确实需要此类相互依赖的标头,则可以这样声明类:
class Block;
在这样的语句之后,您可以使用Block类,但只能在指针或引用之类的复合语句中使用-这意味着
Block* GetNBlock(int);
可以编译。