Pickup::Pickup(std::vector<Agent, std::allocator<Agent>> &agents)" provides no initializer for:
我为一些构造函数收到了这个错误,令人烦恼的是错误在它告诉我我没有提供初始化程序之前突然结束。另外,我很确定我实际上正在为需要它的所有东西提供初始化。任何人都可以对此有所了解吗?
#include "Pickup.h"
Pickup::Pickup(vector<Agent>& agents)
: GameObject(), TOLERANCE(0.1f)
{ // this brace is underlined and is where the error occurs.
xRotation = D3DXVECTOR3(0.005f, 0.005f, 0.04f);
count = 0;
index = -1;
nodeIndex = -1;
isPresent = true;
}
void Pickup::Regenerate()
{
//when the pickup gets picked up, start a countdown
count++;
if (count == 300)
{
isPresent = true;
count = 0;
}
}
//void Pickup::addAmmo(int agentIndex) { }
void Pickup::Update()
{
Rotation(Rotation() + xRotation);
for (unsigned int i = 0; i < agents.size(); i++)
{
//if (D3DXVec3Length(agents[i].MainLegsPosition() - Position()) < TOLERANCE && isPresent)//right here
//{
// addAmmo(agents[i].Index());
// isPresent = false;
//}
}
if (isPresent == false)
{
Regenerate();
}
}
/*void Pickup::Draw(D3DXMATRIX matView, D3DXMATRIX matProjection, ID3D10Effect* effect)//right here
{
if (isPresent == true)
{
Draw(matView, matProjection, effect);
}
}*/
// getters
int Pickup::Index()
{
return index;
}
int Pickup::NodeIndex()
{
return nodeIndex;
}
bool Pickup::IsPresent()
{
return isPresent;
}
/* vector<Agent>& Pickup::Agents()
{
return agents;
}*/
// setters
void Pickup::Index(int index)
{
this->index = index;
}
void Pickup::NodeIndex(int nodeIndex)
{
this->nodeIndex = nodeIndex;
}
头:
#ifndef PICKUP_H
#define PICKUP_H
#include "gameObject.h"
#include "Agent.h"
#include <vector>
using namespace std;
class Pickup : public GameObject
{
private:
int count;
int index;
int nodeIndex;
bool isPresent;
D3DXVECTOR3 xRotation;
const float TOLERANCE;
void Regenerate();
protected:
vector<Agent>& agents;
public:
Pickup(vector<Agent>& agents);
virtual void addAmmo(int agentIndex);
void Update();
void Draw();
// getters
int Index();
int NodeIndex();
bool IsPresent();
// setters
void Index(int index);
void NodeIndex(int nodeIndex);
};
#endif
答案 0 :(得分:4)
会员agents
未初始化。
答案 1 :(得分:0)
构造函数不会初始化属性&#39; agent&#39;。它必须在构造函数初始化列表中初始化。初始化初始化列表中的所有属性(count,index,nodeIndex,...)也是一种很好的做法,而不是为它们赋值。
顺便说一下,为什么“代理商”会在&#39;属性受保护?它应该是私人的。您不应允许派生类直接修改属性。它避免了凌乱的代码。
干杯。