相关疑难解决方法(0)

删除c向量的int向量数组

我宣布:

vector<int> * part = new vector<int>[indmap];
Run Code Online (Sandbox Code Playgroud)

好吧,我知道:"你为什么不申报矢量向量?".下次我会这样做,但现在我想了解更多关于我无法解决的向量的问题.

现在我想释放所有资源,我该做什么?

delete[] part;  
Run Code Online (Sandbox Code Playgroud)

但在删除数组之前,我该怎么做才能删除所有的矢量对象?

c++

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

为什么要删除此对象导致问题?

实例:

weapons.push_back(new Pistol());
weapons.push_back(new Rifle());
weapons.push_back(new Shotgun());
Run Code Online (Sandbox Code Playgroud)

析构函数,当第一次删除时,代码中断.当我关闭程序时会发生这种情况.

Brain::~Brain()
{
    for (unsigned int i = 0; i < weapons.size(); i++)
    {
        delete weapons[i]; // this is where the code breaks
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到警告:

Unhandled exception at 0x0096371f in D3D10DEMO.exe: 0xC0000005: Access violation reading location   0x000002ce.
Run Code Online (Sandbox Code Playgroud)

武器是这样的:

weapons(vector<Gun*>())
Run Code Online (Sandbox Code Playgroud)

编辑 - 我已经删除了这个问题的大部分代码,但是我也减少了我的程序,以便在一个更小的解决方案中重现问题:

http://dl.dropbox.com/u/13519335/D3D10DEMO_0.25.MinRep.zip

c++ winapi

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

自定义对象传染媒介

我试图创建一个头文件中定义的自定义对象的向量,然后在实际的cpp文件中初始化它们.我在Visual Studio中遇到以下错误:

error C2976: 'std::vector' : too few template arguments
error C2065: 'Particle' : undeclared identifier
error C2059: syntax error : '>'
Run Code Online (Sandbox Code Playgroud)

在下面的代码中,向量在Explosion.h中定义.

Particle.h:

#pragma once
class Particle : public sf::CircleShape {
public:
    float speed;
    bool alive;
    float vx;
    float vy;
    Particle(float x, float y, float vx, float vy, sf::Color color);
    ~Particle();
};
Run Code Online (Sandbox Code Playgroud)

Particle.cpp:

#include <SFML/Graphics.hpp>
#include "Particle.h"

Particle::Particle(float x, float y, float vx, float vy, sf::Color color) {
    // Inherited
    this->setPosition(x, y);
    this->setRadius(5);
    this->setFillColor(color);

    // Player Defined Variables
    this->speed …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance vector object sfml

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

C++基于成员布尔值对向量中的对象进行排序

在我的程序中,我有一些用于在游戏中处理射弹的类.

class Projectile
{
bool IsActive;
bool GetActive();
//....
};

class Game
{
std::vector<Projectile*> ProjectilesToUpdate;
//....
};
Run Code Online (Sandbox Code Playgroud)

当然,除此之外还有更多,但我试图保持与当前问题的相关性.

我想使用std :: sort来制作它,以便IsActive == true的所有射弹都处于远端,并且任何非活动的射弹都在最后.

我该怎么做呢?

c++ sorting class vector object

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

Java对C++的指针模型

Java和C/C++之间最大的区别在于Java有一个指针模型,可以消除覆盖内存和破坏数据的可能性.

这是教科书的引用.我一直认为使用指针而不是Java是C++.有人可以详细说明吗?

java

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

一个可以指向任何地方的指针,如何确定是否可以安全地调用"删除"?

有没有办法在运行时区分以下两种情况:

double ptr * = new double(3.14159);
double variable = 3.14159

double * testPtr_1 = ptr;
double * testPtr_2 = &variable;

delete testPtr_1  // fine... 
delete testPtr_2  // BIG RUN TIME ERROR !!!
Run Code Online (Sandbox Code Playgroud)

我发现自己陷入困境,我需要调用delete操作符来获取一些未知指针.指针可以指向任何位置(指向"本地"变量或动态分配的变量).

我怎样才能找到我的"未知"指针指向的位置,因此选择何时何时不要调用operator delete




编辑: 好的我看到每个人都指着智能指针,但如果我想写自己的指针怎么办?一套智能指针(这是我的问题背后的原因)?

c++

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

实现双向链表,其中数据存储在堆上?

我试图实现一个双向链表,其中节点存储在堆栈上,但堆上的节点数据.您可以使用push()将包含数据的新节点添加到列表中,并使用pop()删除最后一个元素.

我有push()方法的问题.

#include <iostream>

using namespace std;

struct Data {
    string name;
    int age;
};

struct Node {
    struct Node *next;
    struct Node *previous;   
    struct Data *d;         
};

struct Node *first;
struct Node *last;

void init() {
    first = last = NULL;
}


void push(Data d) { 
    Node *temp;

    if(first == NULL){
        first = new Node();
        first->d = malloc(sizeof(struct Data *));
        first->next = NULL;
        first->previous = NULL;
        last = first;
    } else if(last->next == NULL) {
        last->next = new Node(); …
Run Code Online (Sandbox Code Playgroud)

c++ malloc

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

使用唯一指针向树添加节点

我是智能指针的新手,我正在尝试创建一个双树,其中子节点通过唯一指针从父节点指向,并且子节点通过原始指针指向父节点.因此,当父节点被销毁时,整个子树将在该过程中被销毁.

class Node {
private:
    Node *parent;
    std::unique_ptr<Node> left;
    std::unique_ptr<Node> right;
public:
    Node(Node* _left, Node* _right, Node* _parent);
};

Node::Node(Node* _left, Node* _right, Node* _parent) {
    parent = &_parent;

    //this is where the problem starts
}
Run Code Online (Sandbox Code Playgroud)

我不明白如何指向一个可能有我要连接的树的新节点.如果我使用make_unique,我相信会创建一个新节点而不是保留树.

我可能完全错了,因为我刚刚学习了4天前的智能指针(实际上有足够的时间学习一些东西).

c++ smart-pointers

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

c ++我是否需要手动删除一个void*指针,然后指向另一个具体类型?

假设我有一个指针void* p,然后在一些传入和传出函数后,让我们说p现在指向int.然后我需要手动删除delete static_cast<int*>(p)吗?

在大多数地方,人们说delete只有在有的时候才会发生new.但在这种情况下,它不是,但C++本身还记得发布那个内存吗?

c++ pointers c++11

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

C ++使用子数组释放数组的内存分配

从理论上讲,如果仅删除以下代码片段中的内容arraysresults而又不删除它的sub_array内部内容,arrays就可以了,return 0;或者必须首先删除所有内容,sub_array然后才能安全地删除arraysresults

int main() {

    int subarrays, queries;

    cin >> subarrays >> queries;

    int** arrays = new int* [subarrays]();

    int* results = new int[queries];

    for (int i = 0; i < subarrays; i++) {

        int length;
        cin >> length;

        int* sub_array = new int[length];

        for (int j = 0; j < length; j++) {

            int element;
            cin >> element;

            sub_array[j] = element;
        }

        arrays[i] …
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

c++ ×9

object ×2

vector ×2

c++11 ×1

class ×1

inheritance ×1

java ×1

malloc ×1

pointers ×1

sfml ×1

smart-pointers ×1

sorting ×1

winapi ×1