首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对象类型私有类成员

对象类型私有类成员
EN

Stack Overflow用户
提问于 2011-10-13 20:30:44
回答 3查看 87关注 0票数 0

边界框和立方体在其构造函数中都有几个参数

标题:

代码语言:javascript
代码运行次数:0
运行
复制
#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

来源:

代码语言:javascript
代码运行次数:0
运行
复制
#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不是指针,而是简单的实例?提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-13 20:35:44

很简单。就像这样:

代码语言:javascript
代码运行次数:0
运行
复制
#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

来源:

代码语言:javascript
代码运行次数:0
运行
复制
#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);
}
票数 2
EN

Stack Overflow用户

发布于 2011-10-13 20:34:55

使cubeboundingBox成为常规(非指针)类成员,然后使用初始化器列表为它们调用适当的构造函数,例如

代码语言:javascript
代码运行次数:0
运行
复制
Wall::Wall(D3DXVECTOR3 min, D3DXVECTOR3 max) :
  cube(D3DXCOLOR(255, 20, 20, 255), min, max),
  boundingBox(min, max)
{
   // nothing
}
票数 0
EN

Stack Overflow用户

发布于 2011-10-13 20:35:04

首先,当你使用指针时,这是错误的:boundingBox = BoundingBox(min, max);BoundingBox之前应该有一个new

您可以简单地调整类中属性的声明:

代码语言:javascript
代码运行次数:0
运行
复制
class Wall
{
private:
    Cube cube;
    BoundingBox boundingBox;
public:
    Wall(D3DXVECTOR3 min, D3DXVECTOR3 max);
    ~Wall();
    void Draw(D3DXMATRIX matView, D3DXMATRIX matProjection);
};

现在调整CTOR:

代码语言:javascript
代码运行次数:0
运行
复制
Wall::Wall(D3DXVECTOR3 min, D3DXVECTOR3 max) : cube(D3DXCOLOR(255, 20, 20, 255), min, max), boundingBox(min, max)
{ }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7754144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档