边界框和立方体在其构造函数中都有几个参数
标题:
#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;
}
我的问题是,我如何修改这些类,使立方体和boundingBox不是指针,而是简单的实例?提前谢谢。
发布于 2011-10-13 12:35:44
很简单。就像这样:
#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);
}
发布于 2011-10-13 12:34:55
使cube
和boundingBox
成为常规(非指针)类成员,然后使用初始化器列表为它们调用适当的构造函数,例如
Wall::Wall(D3DXVECTOR3 min, D3DXVECTOR3 max) :
cube(D3DXCOLOR(255, 20, 20, 255), min, max),
boundingBox(min, max)
{
// nothing
}
发布于 2011-10-13 12:35:04
首先,当你使用指针时,这是错误的: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)
{ }
https://stackoverflow.com/questions/7754144
复制