在命名空间/头文件中找不到类

Posted

技术标签:

【中文标题】在命名空间/头文件中找不到类【英文标题】:Can't find class in a namespace / header file 【发布时间】:2012-04-24 20:50:22 【问题描述】:

我创建了一个类并将其拆分为源文件和头文件,但我无法让它们相互交谈。

我的头文件 GridLayout.h 看起来像这样:

#ifndef GRIDLAYOUT_H_INCLUDED
#define GRIDLAYOUT_H_INCLUDED

#include <vector>
#include <types.h>
#include "GridPlaceable.h"

namespace Spaceships 

class GridLayout 
    //consider replace with std::list
    typedef std::vector<GridPlaceable*> column;

    public:
        GridLayout();
        ~GridLayout();

        void arrange();
        void splitColumn(size_t colNo, distance position);
        void splitRow(size_t rowNo, distance position);
        bool placeOne(GridPlaceable* thatOne);

private:
        bool tryToFit(GridPlaceable* thatOne, size_t startCol, size_t startCell);

        std::vector<column> wholeGrid;
        std::vector<GridPlaceable*> toPlace;

        std::vector<distance> rowHeights, colWidths;
        std::vector<size_t> firstEmpties;

        bool mandates;
;

;

GridLayout.cpp 看起来像:

#include "GridLayout.h"

namespace Spaceships 

GridLayout::GridLayout() 



//GridLayout::aBunchOfOtherFunctions()  



#endif

当我编译时,我得到一大堆GridLayout does not name a type 错误。这可能是什么原因造成的?我似乎记得曾经通过输入一堆分号解决了类似的问题,但这次似乎不起作用。

【问题讨论】:

听起来您要求我们帮助您解决语法错误。在这种情况下,您将需要发布真实代码,否则我们最终会追逐不相关的问题。 是真码???你在类定义、构造函数声明、命名空间声明之后缺少; @EdChum,命名空间分号是可选的。 @chris 真的,不知道总是出于习惯添加它,但发布的代码仍然存在许多其他问题,如果不是实际代码,这又是另一个猜谜游戏了 对不起,对不起。我发布了我的实际头文件。不过,cpp 文件确实是这样开始的。 【参考方案1】:

您的“实际头文件”包含两个默认构造函数声明:

public:
    GridLayout();
    GridLayout();

您应该删除其中之一。

编辑:现在您在标题末尾缺少一个#endif,并且在.cpp 文件末尾有一个太多...

【讨论】:

从来没有会猜到。 哦,实际上,我在我的代码中修复了那个,但我想我忘了在这里修复它。我现在就这样做。【参考方案2】:

想通了!我会把它放在这里以防它对某人有帮助。

我一定是在某个时候设置了 GridLayout.h 进行编译,然后再改回来,因为目录中有一个 GridLayout.gch。所以编译器一定是直截了当,完全忽略了 .h 。我删除了那个文件,现在它显示了我代码中的所有真实错误。

【讨论】:

恭喜修复!如果可以,请确保将您的答案标记为“已接受”,以便其他人能够从您的成功中学习。干杯~

以上是关于在命名空间/头文件中找不到类的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 错误:在链配置的命名空间 App\Entity 中找不到类 xxx [重复]

Symfony2 - 在链配置的命名空间中找不到类“X”

Zend Framework 2 + Doctrine ODM,“在链配置的命名空间中找不到类”错误?

在链配置的命名空间 App\Entity [Symfony 5.3][PHPUnit 8.5] 中找不到类 Mock_*

java 主启动类找不到

C++ 在命名空间中找不到函数