在C++中,我如何实现以下目标:
// player.h
#ifndef PLAYER_H
#define PLAYER_H
class Player {
public:
Player(Cake* cake);
}
#endif
// player.cpp
#include "cake.h"
#include "player.h"
Player::Player(Cake* cake) { }
// cake.h
#ifndef CAKE_H
#define CAKE_H
class Cake {
public:
Cake( );
}
#endif
// cake.cpp
#include "cake.h"
Cake::Cake() { }
// main.cpp
#include "player.h"
#include "cake.h"
int main() {
Cake* cake();
Player* player(cake); // This does not work
return 0;
}
换句话说,在构造函数中具有一个
Player
指针,该指针需要一个Cake
指针。但是,当我尝试使用
g++
编译应用程序时,出现以下错误:error: cannot convert ‘Cake* (*)()’ to ‘Player*’ in initialization
。这可能是有道理的,但我想知道为什么我不能让一个需要使用指针(在构造函数中)的指针。
最佳答案
这看起来像是错误的本地初始化。
Cake* cake();
Player* player(cake);
需要重写为
Cake* cake = new Cake();
Player* player = new Player(cake);
关于c++ - 带有指针构造函数的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7928458/