基本上我正在研究物理游戏.需要减少侧向运动(如接近0,而不是变为负值),但我不知道它在哪个方向,所以我不知道是添加阻力还是减去阻力.
(如果物品向右移动,则具有正向力,向左移动,负向力)
现在我这样做:
if (objects[i]->force.x > 0)
objects[i]->force.x -= drag;
else
objects[i]->force.x += drag;
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但我觉得必须有一个更时尚的方式来做到这一点.
找到一种确保它不会超过0的方法也不会有什么坏处
我有一个"Pictureframe"的矢量(pflist),我想要销毁所有这些.所以我运行pflist.clear(); 文档说这会运行向量中每个项目的析构函数,但事实并非如此!
我有一个:
vector<Pictureframe*> pflist;
Run Code Online (Sandbox Code Playgroud)
剩下的就是:
class Pictureframe{
scene::IMeshSceneNode *picture;
scene::IMeshSceneNode *frame;
public:
Pictureframe();
~Pictureframe();
};
Run Code Online (Sandbox Code Playgroud)
然后在cpp文件中:
Pictureframe::~Pictureframe(){
// delete picture;
// delete frame;
cout<<"Destructor Called.\n\n";
}
Run Code Online (Sandbox Code Playgroud)
在视线中没有"被叫的破坏者"!这就是我所说的:
pflist.clear();
Run Code Online (Sandbox Code Playgroud)
我确信这条线正在运行,并且由5个相框组成.我还尝试了一个通过矢量pop_back'ing的for循环,这也有同样的问题.
所以Destructor,YU NO CALL?
我正在尝试创建char*一个字符串的第一个字符.字符串保持在字符串向量内.
我尝试过以下方法:
char* value = &cards[0][0]; cout<<"Value "<<i<<" == "<<value<<endl;
char* value = &cards[0].front(); cout<<"Value "<<i<<" == "<<value<<endl;
('cards'是一个字符串向量,每个字符串是常规52卡片组中的一张卡片)
但无论我做什么,值总是等于整个字符串.
我如何使价值成为一个字母?