C创建“包装器”

C创建“包装器”,第1张

概述在下面更新 我正在尝试创建此包装器以包含指向所有其他类的指针.我遇到了这个问题(例子): main.cpp中 struct wrap { Game* game; Player* player; Map* map;}; game.h class Game { private: wrap* info;} 有没有解决方法,包装需要游戏,游戏需要包装. (我知道包装类[此案例结 在下面更新

我正在尝试创建此包装器以包含指向所有其他类的指针.我遇到了这个问题(例子):

main.cpp中

struct wrap {  Game* game;  Player* player;  MaP* map;};

game.h

class Game {  private:    wraP* info;}

有没有解决方法,包装需要游戏,游戏需要包装. (我知道包装类[此案例结构]不是最佳实践,但我在其他类中经常需要该信息.)

更新
现在,我有一个新问题.

items.h

// topstruct CoreInfo;voID Items::test() {    struct CoreInfo* b;    //b->testing = 4;}

(结构CoreInfo包含一个变量“int testing.”,我无法弄清楚如何访问items类中的任何内容,正常错误:7请求’b’中的成员’testing’,这是非类型的’CoreInfo’ *”

解决方法 只需向前声明wrap结构,如下所示:

main.cpp中

#include "game.h"struct wrap {  Game* game;  Player* player;  MaP* map;};

game.h

struct wrap;class Game {  private:    struct wraP* info;}

编辑:

问题是你没有利用编译单元在声明和定义之间进行分离.如果你在编译单元(items.cpp)中定义你的类及其成员,在标题items.h中声明它,你就没有问题.

让我们举一个例子来说明这一点:

foo.h中

#include "bar.h"class A {    B b_instance;    voID do_something(int i,int j);}

Foo.cpp中

#include "foo.h"int A::do_something(int i,int j) {   return i+j; }

bar.h

class B {    A a_instance;    voID use_a();}

bar.cpp

#include "foo.h" // which includes bar.h as wellvoID B::use_a() {    int k = a_instance.do_something();}
总结

以上是内存溢出为你收集整理的C创建“包装器”全部内容,希望文章能够帮你解决C创建“包装器”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1216048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存