小编met*_*ics的帖子

C++:对象的向量与指向新对象的指针的向量?

我正在寻求通过编写示例软件渲染器来提高我的C++技能.它采用由3d空间中的点组成的对象,并将它们映射到2d视口,并为视图中的每个点绘制不同大小的圆.哪个更好:

class World{
    vector<ObjectBaseClass> object_list;
public:
    void generate(){
        object_list.clear();
        object_list.push_back(DerivedClass1());
        object_list.push_back(DerivedClass2());
Run Code Online (Sandbox Code Playgroud)

要么...

class World{
    vector<ObjectBaseClass*> object_list;
public:
    void generate(){
        object_list.clear();
        object_list.push_back(new DerivedClass1());
        object_list.push_back(new DerivedClass2());
Run Code Online (Sandbox Code Playgroud)

?? 在第二个例子中使用指针来创建新对象会破坏使用向量的点,因为向量会在第一个示例中自动调用DerivedClass析构函数而不是在第二个示例中调用DerivedClass析构函数吗?在使用向量时是否需要指向新对象的指针,因为只要您使用其访问方法,它们本身就会处理内存管理?现在让我们说我在世界上有另一种方法:

void drawfrom(Viewport& view){
    for (unsigned int i=0;i<object_list.size();++i){
        object_list.at(i).draw(view);
    }
}
Run Code Online (Sandbox Code Playgroud)

调用时,这将为世界列表中的每个对象运行draw方法.假设我希望派生类能够拥有自己的draw()版本.为了使用方法选择器( - >),列表是否需要指针?

c++ pointers vector

27
推荐指数
3
解决办法
4万
查看次数

C++:交换不同类型的模板类元素?

template< class T1, class T2 >
class Pair {
    T1 first;
    T2 second;
};
Run Code Online (Sandbox Code Playgroud)

我被要求编写一个swap()方法,以便第一个元素成为第二个元素,第二个元素成为第一个元素.我有:

Pair<T2,T1> swap() {
    return Pair<T2,T1>(second, first);
}
Run Code Online (Sandbox Code Playgroud)

但是这会返回一个新对象而不是交换,我认为它需要是一个改变自己的数据成员的void方法.这是可能的,因为T1和T2可能是不同的类类型吗?换句话说,我不能简单地设置temp = first,first = second,second = temp,因为它会尝试将它们转换为不同的类型.我不确定为什么你可能希望有一个模板对象改变其类型的顺序,因为它似乎会引起混淆,但这似乎是我被要求做的事情.

编辑:谢谢大家的回答!就像我想的那样,交换到位显然没有任何意义,对swap()函数的请求非常模糊.

c++ templates swap types class

3
推荐指数
1
解决办法
2580
查看次数

如何在不购买iPhone的情况下测试我的网站在Mobile Safari上的呈现方式?

我通过谷歌找到的所有"模拟器"只是Safari桌面上的皮肤或使用您的操作系统的默认浏览器:(我借用了我的朋友iPhone并注意到纯CSS下拉菜单的CSS无法正确呈现并且您无法单击链接,但它可以在Safari桌面和其他所有浏览器上正确呈现,甚至是Internet Explorer 6和7.换句话说,该网站在iPhone上无法使用.如何在不购买的情况下测试Safari Mobile渲染引擎苹果手机?

编辑:好的,它似乎有一个适用于Mac的iPhone模拟器.我将看看OSX图像是否会在我的笔记本电脑的另一个硬盘分区上进行双重启动,如果不是,我会想到使用过的iPod Touch,尽管我一般都不屑于拥有多余的外围设备.

iphone emulation mobile-safari

3
推荐指数
1
解决办法
2216
查看次数

标签 统计

c++ ×2

class ×1

emulation ×1

iphone ×1

mobile-safari ×1

pointers ×1

swap ×1

templates ×1

types ×1

vector ×1