小编Kee*_*elx的帖子

如果我删除一个类,它的成员变量是否会自动删除?

我一直在研究,没有任何相关的问题,所以我来到这里.

我试图避免内存泄漏,所以我想知道:

假设我有一个MyClass成员ints ab一个类int array c,它们填充了一个成员函数:

class MyClass
{
    public:
        int a, b;
        int c[2];
        void setVariables() 
        {
            a, b = 0;
            for (int i = 0; i < 2; i++) 
            {
                c[i] = 3;
            }
        }
};
int main(int argc, char* argv[])
{
    MyClass* mc = new MyClass();
    mc->setVariables();
    delete mc;
} 
Run Code Online (Sandbox Code Playgroud)

现在,我打电话后delete mc,会a,b以及所有的内容c被删除?或者我必须在析构函数中明确地做到这一点MyClass

c++ variables class member delete-operator

25
推荐指数
5
解决办法
3万
查看次数

从netbeans运行java applet?

我正在尝试从NetBeans运行Java applet,并且在尝试运行它时,我收到了"找不到主类"错误.我可以通过SHIFT + F6避免这种情况,但这只有在我目前正在主类中编写时才有效.我将处理一个有点大的项目,它将有多个文件,最终总是导航回主类到'main'文件并从那里运行它将非常麻烦.我可以编辑任何类型的配置来告诉NetBeans我想将项目(而不是单个文件)作为applet运行吗?我从本教程中设置了NetBeans .

java applet netbeans configure

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

如何将资源嵌入到单个可执行文件中?

如果您曾经使用过Game Maker工具,那就有点像.我希望能够将我所有的声音,图像和其他类似内容都嵌入到单个C++可执行文件中.游戏制造商将有一个内置的编辑器,而且会对嵌入.gmk文件中的图像,而当你打开它,它会读取图像,并且在比赛中显示出来.我认为他保存的图像不是图像,而是存储在.gmk文件中的纯数据,由编辑器或写入.exe的解释器解释.我该如何制作类似的东西?

c++ embed resources game-maker

7
推荐指数
1
解决办法
3547
查看次数

使用MonoDevelop在Linux上编译windows

我想知道,因为我在谷歌上找不到任何东西,如果我使用MonoDevelop在Linux上编译应用程序,我可以将生成的可执行文件发送到Windows计算机并期望它运行吗?file输出:

PE32 executable for MS Windows (console) Intel 80386 32-bit Mono/.Net assembly
Run Code Online (Sandbox Code Playgroud)

所以我希望它能在开箱即用的Windows上运行.但是我把它发送给了一位朋友进行测试,它说"这不是一个有效的win32应用程序".那么,我需要做什么?它只是C#中的一个基本的hello world控制台应用程序.

c# linux windows executable monodevelop

5
推荐指数
1
解决办法
5339
查看次数

静态和动态库

我正在使用SFML,我正在使用Code :: Blocks和mingw32构建一个应用程序.我已经将SFML库(sfml-whatever.a)添加到我的项目中,并且运行良好.

但是iIrc,静态库被"编译"到可执行文件中.如果是这样,那么为什么我必须将所有SFML DLL放在可执行文件旁边才能在Code :: Blocks之外的任何地方运行?如果我以某种方式"动态地将DLL"从Code :: Blocks中链接到我的项目中,(我不知道该怎么做),我是否还需要发送包含所有.a文件的可执行文件运行正常吗?

在此先感谢,我不太熟悉库,静态或动态.如果它有任何区别,我正在使用Ubuntu linux,我正在使用mingw32进行交叉编译.

c++ static dynamic libraries sfml

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

课程中的结构?

我上课了.我制作了两个单独的文件,标题和c ++文件.我正在使用它为我正在进行的opengl游戏创建一个或多或少的Light'对象'.这是文件:Light.h

#ifndef LIGHT_H
#define LIGHT_H


class Light
{
    public:
        Light(float ix, float iy, float iz, float ir, float ig, float ib , float ia, int itype, int iindex);
        virtual ~Light();
        float x,y,z;
        int index;
        int type;
        struct ambient
        {
            float r, g, b, a;
        };
        struct diffuse
        {
            float r, g, b, a;
        };
        struct specular
        {
           float r, g, b, a;
        };
    protected:
    private:
};

#endif // LIGHT_H
Run Code Online (Sandbox Code Playgroud)

而且,Light.cpp

#include "../include/Light.h"

Light::Light(float ix, float iy, float iz, float …
Run Code Online (Sandbox Code Playgroud)

c++ struct class codeblocks

2
推荐指数
1
解决办法
4952
查看次数

使用for循环c ++声明一个对象数组

好的.所以我已经声明了一个对象数组,并且我已经使用以下代码手动定义了它们:

Object* objects[] =
{
    new Object(/*constructor parameters*/),
    new Object(/*constructor parameters*/)
}; 
Run Code Online (Sandbox Code Playgroud)

无论如何使用某种循环(最好是for循环)来声明这些?就像是:

Object* objects[] =
{
    for(int i=0; i<20; /*number of objects*/ i++)
    {
        new Object(/*constructor parameters*/);
    }
}; 
Run Code Online (Sandbox Code Playgroud)

但是有正确的语法?

c++ arrays syntax declaration object

1
推荐指数
2
解决办法
2万
查看次数

使用与XNA和C#的摩擦

我不是问如何实现这个,这个概念很简单.我遇到的问题是花车.这是我的代码:

Position += mVelocity;

        if (!Keyboard.GetState().IsKeyDown(Keys.Left) && !Keyboard.GetState().IsKeyDown(Keys.Right) && !Keyboard.GetState().IsKeyDown(Keys.Down) && !Keyboard.GetState().IsKeyDown(Keys.Up))
        {
            if (mVelocity.X != 0.0F)
            {
                if (mVelocity.X > 0.0F)
                    mVelocity.X -= mFriction;
                if (mVelocity.X < 0.0F)
                    mVelocity.X += mFriction;
            }
            if (mVelocity.Y != 0.0F)
            {
                if (mVelocity.Y > 0.0F)
                    mVelocity.Y -= mFriction;
                if (mVelocity.Y < 0.0F)
                    mVelocity.Y += mFriction;
            }
        }


        Console.WriteLine(mVelocity.X + ", " + mVelocity.Y);
Run Code Online (Sandbox Code Playgroud)

mFriction是0.2F.

问题是,如果我以正速度(X或Y)移动玩家,摩擦力就会发挥作用,他的速度降低到0.0.但是,如果我以负速度移动他,摩擦会增加,并且出于某种原因,不会停在0.0,而是在停止之前上升到0.2.因此,我有一个移动的玩家,然后当我松开钥匙时,他开始在相反的方向缓慢滑动.为什么是这样?我该如何解决?

另外,我试过这段代码进行测试:

            if (mVelocity.X == 0.2F)
                mVelocity.X = 0.0F;
            if (mVelocity.Y == 0.2F)
                mVelocity.Y = 0.0F;
Run Code Online (Sandbox Code Playgroud)

但它给了我完全相同的结果,好像我没有添加代码.显然,0.2F不等于0.2F.这可能是什么?

最后,在调试输出中,当玩家处于静止状态时,他可以正向移动(假设停止)他的x和y的速度(取决于我如何移动他)是2.980232E-08.我不明白这一点.如果我将速度设置为1,并且每帧减去0.2,那为什么它会以1.0,0.8,0.6,0.4,0.2,0.0之外的其他方式去除?接下来,如果他因为负面移动而处于休息状态,他对x和y的速度(再次,取决于我如何移动他)是0.2.为什么它不会变为-1,-0.8,-0.6,-0.4,-0.2,0.0?而不是从0.0到0.2超过.

这一切对我来说毫无意义,如果有人能为我清楚这一点,我将不胜感激.任何替代解决方案也被接受.如果需要更多代码或澄清,我很乐意提供.

c# floating-point xna velocity

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

这会导致内存泄漏吗?

好吧,所以我和其他人有些分歧,我希望有人比我们中的任何一个人都更了解c ++可以解决这个问题.假设我们在函数内部的某个代码块(对于tilemap引擎):

void loadTiles()
{
Tile* tile = new Tile();
Level->addTile(x, y, tile); //x and y are just arbitrary ints.
/* when addTile is called, it fills the values of the chunk of memory pointed to by tile to the predefined chunk of memory created in the Level object. */
//Then, to remove the dangling pointer safely,
tile = NULL;
} //Then the actual memory pointed to by tile is deallocated here.
Run Code Online (Sandbox Code Playgroud)

Level类有一个名为map [] []的2D Tile数组,它的addTile函数看起来完全像这样:

void Level::addTile(int x, int …
Run Code Online (Sandbox Code Playgroud)

c++ memory pointers memory-leaks allocation

0
推荐指数
1
解决办法
270
查看次数