В 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
.
Возможно, это имеет смысл, но я хотел бы знать, почему у меня не может быть указатель, который берет указатель (в конструкторе) .