相关疑难解决方法(0)

我什么时候可以使用前瞻性声明?

我正在寻找允许在另一个类的头文件中进行类的前向声明的定义:

我是否允许为基类,作为成员持有的类,通过引用传递给成员函数的类等执行此操作?

c++ c++-faq forward-declaration

588
推荐指数
7
解决办法
23万
查看次数

在#ifdef/#define之前是#include包括-Guard好吗?

我总是把我的#include#ifdef/ #define包含卫队.现在我的IDE(Qt Creator)的重构机制将它放在Include-Guard之前,例如

#include "AnotherHeader.h"

#ifndef MYHEADER_H
#define MYHEADER_H
Run Code Online (Sandbox Code Playgroud)

这会导致任何问题,还是可以这样离开?

c++ include-guards include header-files

9
推荐指数
2
解决办法
7501
查看次数

循环依赖/不完整类型

在 C++ 中,我遇到了循环依赖/不完整类型的问题。情况如下:

Stuffcollection.h

#include "Spritesheet.h";
class Stuffcollection {
    public:
    void myfunc (Spritesheet *spritesheet);
    void myfuncTwo ();
};
Run Code Online (Sandbox Code Playgroud)

东西集合.cpp

void Stuffcollection::myfunc(Spritesheet *spritesheet) {
    unsigned int myvar = 5 * spritesheet->spritevar;
}
void myfunc2() {
    //
}
Run Code Online (Sandbox Code Playgroud)

精灵表.h

#include "Stuffcollection.h"
class Spritesheet {
    public:
    void init();
};
Run Code Online (Sandbox Code Playgroud)

精灵表.cpp

void Spritesheet::init() {
    Stuffcollection stuffme;
    myvar = stuffme.myfuncTwo();
}
Run Code Online (Sandbox Code Playgroud)
  • 如果我保留如上所示的包含,我会spritesheet has not been declared在 Stuffcollection.h(上面的第 4 行)中收到编译器错误 。我理解这是由于循环依赖。
  • 现在,如果我更改#include "Spritesheet.h"class Spritesheet;Stuffcollection.h 中的前向声明,则会在 Stuffcollection.cpp 中收到编译器错误invalid use of …

c++ circular-dependency incomplete-type

6
推荐指数
1
解决办法
3829
查看次数