码迷,mamicode.com
首页 > 编程语言 > 详细

C++类成员函数的传参问题

时间:2015-07-30 00:33:47      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

  最近代码中经常会出现,成员函数传参经常会发生值传不进去的情况,也是比较低级的错误,这里整理一下供大家参考一下。


   (1)成员变量名与形参名相同

World::World(unsigned maxContacts, unsigned iterators)  
{  
    resolver = iterators;  
    maxContacts = maxContacts;  
    contacts = new ParticleContact[maxContacts];  
    calculateIterations = (iterators == 0);  
}  

  这里看一下第4行代码。这里本意是把成员函数的形参传给成员变量,命名的时候两者正好重名。这样写并没有语法错误,但是会导致形参无法传给成员变量。修改方法如下:

World::World(unsigned maxContacts, unsigned iterators)  
{  
    resolver = iterators;  
    World::maxContacts = maxContacts;  
    contacts = new ParticleContact[maxContacts];  
    calculateIterations = (iterators == 0);  
}  

   此外,还有另一种方法如下:

World::World(unsigned maxContacts, unsigned iterators)  
{  
    resolver = iterators;  
    this->maxContacts = maxContacts;  
    contacts = new ParticleContact[maxContacts];  
    calculateIterations = (iterators == 0);  
}

 


   (2)类实例赋值给指针

void Particle::SetParticle(Particle particle)
{
     /*m_particle为指针*/    
     m_particle = &particle;
}

  这里由于形参particle为局部变量,即使m_paritcle已经指向了了particle,但是运行完这个函数,m_particle指向的还是空的地址。所以,一种方案是加引用,另一种方案就是直接传指针,代码如下:

void Particle::SetParticle(Particle& particle)
{
     /*m_particle为指针*/    
     m_particle = &particle;
}

  

void Particle::SetParticle(Particle* particle)
{
     /*m_particle为指针*/    
     m_particle = &particle;
}

 


   暂时就这么多,以后遇到继续补充。

  

 

C++类成员函数的传参问题

标签:

原文地址:http://www.cnblogs.com/caster99/p/4687870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!