对象类型私有类成员
object type private class members
边界框和立方体在它们的构造函数中都有几个参数
头:#ifndef WALL_H
#define WALL_H
#include "cube.h"
#include "BoundingBox.h"
class Wall
{
private:
Cube* cube;
BoundingBox* boundingBox;
public:
Wall(D3DXVECTOR3 min, D3DXVECTOR3 max);
~Wall();
void Draw(D3DXMATRIX matView, D3DXMATRIX matProjection);
};
#endif
源:#include "Wall.h"
Wall::Wall(D3DXVECTOR3 min, D3DXVECTOR3 max)
{
cube = new Cube(D3DXCOLOR(255, 20, 20, 255), min, max);
boundingBox = new BoundingBox(min, max);
}
void Wall::Draw(D3DXMATRIX matView, D3DXMATRIX matProjection)
{
cube->Draw(matView, matProjection);
}
Wall::~Wall()
{
delete cube;
delete boundingBox;
}
我的问题是,我如何修改这些类,使cube和boundingBox不是指针,而是简单的实例?
很简单。就像这样:
#ifndef WALL_H
#define WALL_H
#include "cube.h"
#include "BoundingBox.h"
class Wall
{
private:
Cube cube;
BoundingBox boundingBox;
public:
Wall(D3DXVECTOR3 min, D3DXVECTOR3 max);
void Draw(D3DXMATRIX matView, D3DXMATRIX matProjection);
};
#endif
源:#include "Wall.h"
Wall::Wall(D3DXVECTOR3 min, D3DXVECTOR3 max)
:cube(D3DXCOLOR(255, 20, 20, 255), min, max)
,boundingBox(min, max)
{
}
void Wall::Draw(D3DXMATRIX matView, D3DXMATRIX matProjection)
{
cube.Draw(matView, matProjection);
}
使cube
和boundingBox
成为常规(非指针)类成员,然后使用初始化列表为它们调用相应的构造函数,例如
Wall::Wall(D3DXVECTOR3 min, D3DXVECTOR3 max) :
cube(D3DXCOLOR(255, 20, 20, 255), min, max),
boundingBox(min, max)
{
// nothing
}
首先,当您使用指针时,这是错误的:boundingBox = BoundingBox(min, max);
应该在BoundingBox
之前有一个new
。
您可以简单地调整类中的属性声明:
class Wall
{
private:
Cube cube;
BoundingBox boundingBox;
public:
Wall(D3DXVECTOR3 min, D3DXVECTOR3 max);
~Wall();
void Draw(D3DXMATRIX matView, D3DXMATRIX matProjection);
};
现在你调整你的CTOR:
Wall::Wall(D3DXVECTOR3 min, D3DXVECTOR3 max) : cube(D3DXCOLOR(255, 20, 20, 255), min, max), boundingBox(min, max)
{ }
相关文章:
- 根据模板类型选择类模板的成员类型?
- 函数模板签名中忽略的成员类型def 的访问说明符
- 在C++如何从数组中提取成员并返回成员类型的数组?
- C++从成员类型中扣除类型的功能模板?
- 无法初始化以 std::byte 作为成员类型的位字段
- 构造函数可以更改默认成员类型吗?
- 使用相同方法但不同成员类型构建类的最佳方法
- 允许通过指向方法的成员参数的指针来推断模板参数所指向的成员类型
- 使用 std::条件根据模板参数选择成员类型
- CRTP:如何推断要用作返回类型的成员类型?
- 对成员类型的成员方法使用 std::result_of<>
- C :可以从类及其受保护的成员类型继承可以继承吗?
- 如何在不指定不必要的模板参数的情况下使用模板类的成员类型
- 基类数据成员类型取决于派生类
- C 多态性:允许模棱两可的成员类型
- 使用使用成员类型别名的构造函数来推论类模板参数
- 获取与在模板参数中传递的函数成员类型相同的类
- 如果静态成员未初始化并且成员类型是类本身,该怎么办?
- boost::bind 无法绑定到纯虚拟基类中定义的非静态函数模板成员类型
- 将联合强制转换为其成员类型之一