標籤:
最近代碼中經常會出現,成員函數傳參經常會發生值傳不進去的情況,也是比較低級的錯誤,這裡整理一下供大家參考一下。
(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++類成員函數的傳參問題