用另一个类成员 C++ 初始化一个类成员

Posted

技术标签:

【中文标题】用另一个类成员 C++ 初始化一个类成员【英文标题】:Initializing a class member with another class member C++ 【发布时间】:2015-07-22 00:02:38 【问题描述】:

我有一个包含两个不同类对象作为成员的类。我想用另一个成员初始化其中一个成员,但到目前为止我似乎无法让它工作。

例如,Game game(&input); 包含必须指定类型的错误。我该怎么做呢?

class KApp  
private:
    Input input;
    Game game(&input);

;


class Input 
    Input() ;
;

class Game 
private:
    Input* input;
public:
    Game(Input & inp) : input(&inp) 
    Game(Input* inp) : input(inp) 
;

【问题讨论】:

【参考方案1】:

试试这样的

class KApp  
private:
    Input input;
    Game game;
    KApp() : game(&input) 
;

Game game(&input); 的情况是,您声明了一个成员 game,编译器已将其作为函数声明并抱怨该参数没有类型。

这样,您在 KApp 的构造函数中显式调用 Game::Game(Input*)(此时应使用其默认构造函数初始化输入)。

编辑 - 输入*与输入&

【讨论】:

级长。谢啦。我明白你在说什么。我正在努力尽快做到这一点。我应该在调用类对象构造函数时而不是在声明类对象时这样做。我做了调整,效果很好。

以上是关于用另一个类成员 C++ 初始化一个类成员的主要内容,如果未能解决你的问题,请参考以下文章

C++ 通过分配其他构造函数初始化的类成员来初始化类成员是一个坏主意吗?

使用一个函数调用 C++ 初始化多个常量类成员

初始化基类成员的首选方法 (c++)

如何在 C++ 的外部类构造函数中初始化嵌套类成员

C++ 静态 const 类成员初始化

C++ const修饰类成员的说明