带有指针构造函数的指针
Pointer with a pointer constructor
在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);
Cake* cake();
这里cake
并不像您所设想的那样是一个变量。编译器看起来好像cake()
是一个正向声明,它返回Cake*
并且不带任何参数。
可以是
Cake cake;
Player *player = new Player(&cake);
这是正确的C++语法:
Cake* cake = new Cake();
Player* player = new Player(cake);
Cake在player.h中是未知类型。使用前向声明:
// player.h
class Cake;
class Player
{
private:
Cake* m_cake;
public:
Player( Cake* c ) : m_cake(c) {}
};
相关文章:
- 如果基类包含双指针成员,则派生类的构造函数
- 复制构造函数C++无法正确复制指针
- 使用基类指针调用基类的值构造函数的语法是什么?
- C++ 对象指针数组的复制构造函数
- 构造函数 (C++) 中的 char 指针参数存在问题
- 为什么使用 std::istream_iterator 构造函数返回指针
- 在对象构造期间,将指向尚未构造的子对象的指针传递给另一个子对象的构造函数是否危险?
- 使用指向成员函数的指针在另一个类中调用类构造函数
- 通过从构造函数中的'this'复制的指针改变常量对象
- 为什么指针对象没有调用默认构造函数
- 函数返回时,带指针的复制构造函数失败
- 如何编写复制构造函数来复制指针?
- 如何使用函数(而不是构造函数)将派生类对象分配给基类指针
- 使用 Rcpp 公开将指向对象的指针作为参数的构造函数
- 类型强制转换指针构造函数调用
- shared_ptr的原始指针构造函数是一个错误吗?
- 为什么在同一类中使用不同的(共享_ptr和正常)指针构造函数,我会得到不同的结果
- Boost共享指针构造函数/析构函数
- 带有指针构造函数的指针
- Boost共享指针构造函数析构函数