Visual Studio 失踪;前 *

Visual Studio missing ; before *

我正在 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++ 新手,我找不到错误。在 Stack 中,我发现 class 声明后缺少 ; 等解决方案,但我有分号。

你不需要:

 #include"BlocksContainer.h"

在 block.h 中,此行导致 Block 在 BlocksContainer.h 中未定义,因为它对编译器尚不可见。

如果你真的需要这样的相互依赖 headers 你可以这样声明 class:

class Block;

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