c++ - { token 之前的预期类名

标签 c++ compilation

我想弄清楚为什么我得到了一个错误:预期的类名在 { token 之前

这里是错误的相对来源:

#pragma once
#ifndef H_FXACTION
#define H_FXACTION

#include "CP_M_RefCounted.h"
#include "FxTypes.h"
#include "string"
#include "FxString.h"
#include "FxPixels.h"
#include "CP_Rect.h"
#include "FxStreamable.h"
#include "FxPoint.h"
#include "FxPtr.h"
#include "FxImage.h"
#include "FxSleekStreaming.h"

typedef FxID FxActionType;
typedef FxUInt32 FxActionID;

FxActionID FrMakeUniqueActionID(void); 

class FxActionData;

class FxActionData : public CP_M_RefCounted
{

    public:
    FxActionData();
    FxActionData(FxBool final) :mFinal(final) { }
    virtual ~FxActionData();

我在这一行收到错误:class FxActionData : public CP_M_RefCounted

我不明白为什么这行:class FxActionData;当您直接在其下创建类时是否存在。这不是前向声明吗?

这里可能发生了什么事情?

最佳答案

class FxActionData; 是一个*前向声明。它不会造成任何伤害,但允许不拖入完整的头文件,例如,只是一个指向类的指针。这对你这里的情况没用。

CP_M_RefCounted 可能是一个模板(或者可能在命名空间中声明)。查看 CP_M_RefCounted.h

中的内容

关于c++ - { token 之前的预期类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576193/

相关文章:

c++ - 正则表达式 - 匹配后面没有特定模式的字符

c++ - 我应该在哪里保存代码块项目?

c++ - IPC:在两个程序之间使用 C++ 中的命名管道

c++ - 如何减少 CMake 引入的不必要的 C++ 库依赖项?

haskell "libraries"

c - 是什么导致此代码仅适用于某些编译器(UD?)?

c++ - CUDA:每个 GPU 线程上的 Runge-Kutta 轨迹

java - Java 中的静态导入

java - 需要输入两次 'N'才能显示相关信息

swift - 导入框架构建以在 Swift REPL 中进行测试失败?