C ++错误:嵌套名称说明符中使用的类型不完整

192

我有以下头文件helper.h:

#ifndef ADD_H
#define ADD_H

class Helper{
public:
    static float calculateSpriteSize(float imgSize, float screenSize);
};

#endif

这是我的helper.cpp:

#include "block.h"
#include "helper.h"

float Helper::calculateSpriteSize(float imgSize, float screenSize)
{
    return ((imgSize/screenSize)*100);
}

但是,由于某种原因,当我通过执行以下操作在运行的代码上调用函数calculateSpriteSize时:

#include "header.h"


int main(void){
     float h = Helper::calculateSpriteSize( 168.0f, 170.0f );
)

我收到以下错误:

错误:嵌套名称说明符中使用了不完整的类型'Helper'

任何帮助,将不胜感激。

Block.h看起来如下:

#ifndef ADD_H
#define ADD_H

class Block{
    private:
         int imgID;
         int life;
         float price;

    public:
         Block();

         void setImgID(int imgID);
         int getImgID();
    };

    #endif

并且block.cpp看起来如下:

#include "block.h"

Block::Block()
{

}

void Block::setImgID(int imgID)
{
     this->imgID = imgID;
}

int Block::getImgID()
{
    return imgID;
}

更新:我按照Rakete1111的建议将Helper添加到类定义中。但这并不能解决问题。

更新2:将前向声明更改为包括。如果它很重要,在我的代码中添加了其他包含。

songyuanyao

前向声明引入的类型是不完整类型但是调用成员函数要求类型是完整的,否则编译器如何知道成员是否存在及其签名?

您需要包括头文件。

#include "helper.h"

int main(void){
     float h = Helper::calculateSpriteSize( 168.0f, 170.0f );
)

编辑

ADD_H在“ block.h”和“ helper.h”中都使用了相同的宏这意味着

#include "block.h"
#include "helper.h"

第二个包含会失败,helper.h根本不会包含的内容

将包含的保护宏名称更改为唯一,更好地使其与文件名一致。HELPER_HBLOCK_H

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Pimpl Idiom的嵌套名称说明符中使用的不完整类型

嵌套名称说明符中使用的不完整类型`std :: variant <...>`

在 C++ 中的错误之前无效使用不完整的类型和预期的类型说明符

错误消息:嵌套名称说明符中的类型不完整

带有std enable_if的嵌套名称说明符中使用的不完整类型

C ++错误:Todd Veldhuizen的TMP Turing完整性证明中预期的嵌套名称说明符

嵌套名称说明符中的类型名称不完整

嵌套说明符中使用的模板不完整类型

C ++嵌套名称空间错误-预期的类型说明符错误

在嵌套名称说明符中使用 decltype

在CRTP中使用嵌套名称说明符

C ++ / ENUM /类型名称/说明符

C ++错误:预期类型说明符

为什么C ++中的“不完整类型错误”不适用于嵌套类

从外部类继承的C ++嵌套类;类型不完整

详细类型说明符中与类型相关的嵌套名称说明符

在嵌套名称说明符中使用枚举(编译器警告)

延迟指向C中不完整类型错误的指针

错误:C中的字段类型不完整

c ++:错误:成员访问不完整的类型,未使用的参数[-Werror,-Wunused-parameter]

C ++ 17可选树,错误:无效使用不完整类型

在 C++ 中得到预期的类型说明符错误

Flex 的 C 错误:缺少类型说明符?

错误:C ++要求所有声明都使用类型说明符?

C ++:字段的类型不完整

C结构,不完整的字段类型

C-字段类型不完整

在 c 中使用带有格式说明符的星号

在qsort()中的compare函数中使用结构的值-C99-将指针解引用为不完整类型