class-vector利用自己定义的类型出错,其解答

问题描述

vector利用自己定义的类型出错,其解答

#include
#include
using namespace std;
class Node
{
public:
Node();
void SetX(int);
int GetX();
private:
int x;
};

Node::Node()
{
x = 0;
}
int Node::GetX()
{
return x;
}
void Node::SetX(int i)
{
x = i;
}

class test
{
public:
void Add(Node*);
vector GetNode();
private:
vector m_node;
};

void test::Add(Node* node)
{
m_node.push_back(node);
}
vector test::GetNode()
{
return m_node;
}

int main()
{
test tes;
for (int i = 0; i < 10; i++)
{
Node* node = new Node;
tes.Add(node);
}

vector<Node*>::iterator iter = tes.GetNode().begin();
for (; iter != tes.GetNode().end(); iter++)
{
    cout << (*iter)->GetX() << endl;
}

}

解决方案

你刚开始学吧,好好看看vector的用法

 class Node
{
public:
    Node();
    void SetX(int);
        int GetX();
private:
    int x;
};
Node::Node()
{
    x = 0;
}
int Node::GetX()
{
    return x;
}
void Node::SetX(int i)
{
    x = i;
}
class test
{
public:
    void Add(Node* node);
    vector<Node*>* GetNode();
private:
    vector<Node*> m_node;
};

void test::Add(Node* node)
{
    m_node.push_back(node);
}

vector<Node*>* test::GetNode()
{
    return &m_node;
}

int main()
{
    test tes;
    for (int i = 0; i < 10; i++)
    {
        Node* node = new Node;
        node->SetX(i);
        tes.Add(node);
    }

    vector<Node*>::iterator iter = tes.GetNode()->begin();
    for (; iter != tes.GetNode()->end(); iter++)
    {
        cout << (*iter)->GetX() << endl;
    }

    //最后释放node
}

解决方案二:

谢谢,是的,应该如何释放啊,请指教

解决方案三:

请问如何释放啊,请指教,谢谢

解决方案四:

    for (iter = tes.GetNode()->begin(); iter != tes.GetNode()->end(); iter++)
    {
        delete *iter;
    }

    //或者
    vector<Node*>* vtrTemp = tes.GetNode();
    for (int i = 0; i < vtrTemp->size(); i++)
    {
        delete (*vtrTemp)[i]; // vector元素的另一种使用方法
    }
时间: 2024-08-30 12:22:48

class-vector利用自己定义的类型出错,其解答的相关文章

easyui 利用formatte定义了列格式,但是怎么给这个标签添加事件

问题描述 easyui 利用formatte定义了列格式,但是怎么给这个标签添加事件 列的定义 {"field":"Input","title":"","align":"center","width":20, formatter: function (value, rowData, rowIndex) { return ""; }} 现在要给这个g

Javascript实例教程(8) 利用Javascript基于浏览器类型的重定向

javascript|教程|浏览器 利用javascript基于浏览器类型的重定向 基于浏览器类型的重定向的实现可以通过使用javascript函数来检查navigator.userAgent的字符串"MSIE",它将告诉你用户是否使用Microsoft Internet Explorer(微软的IE浏览器).通过修改windows.location函数可以重定向到正确的URL(同意资源定位器).下面是详细的代码: <HTML> <HEAD> <SCRIP

Sqlserver浅谈用户定义表类型

1.1 简介 SQL Server 中,用户定义表类型是指用户所定义的表示表结构定义的类型.您可以使用用户定义表类型为存储过程或函数声明表值参数,或者声明您要在批处理中或在存储过程或函数的主体中使用的表变量. 若要创建用户定义表类型,请使用CREATE TYPE语句.为了确保用户定义表类型的数据满足特定要求,您可以对用户定义表类型创建唯一约束和主键. 1.2 使用例题 在创建用户定义表类型前先建立一个数据库表 USE [Contacting] GO SET ANSI_NULLS ON GO SE

android传值非自己定义的类型的值

问题描述 android传值非自己定义的类型的值 android怎么传递非自己定义的类型的值,序列化不行啊,别人的类又不可以修改.刚刚学习android,求大神帮忙啊 解决方案 你不能创建该类型的类对象吗?别人的类你应该也可以创建一个对象穿给函数啊 解决方案二: 传值?你指的是intent跳转传值吗? 解决方案三: 创建一个对象,对象实现这个接口 Parcelable,android里用intent的putParcelable传对象 解决方案四: 继承别人的类然后在实现序列化接口... 解决方案

printf-(c语言)利用%ld读取double类型,程序可以运行,但是结果是很大的负数?

问题描述 (c语言)利用%ld读取double类型,程序可以运行,但是结果是很大的负数? #include #define TAX_1 17850 #define TAX_2 23900 #define TAX_3 29750 #define TAX_4 14875 #define TAXRATE_1 0.15 #define TAXRATE_2 0.28 int main(void) { double taxsalary,taxpay; int n; printf("Please enter

JNI中已经有C++类型,不知如何定义Java类型

问题描述 JNI中已经有C++类型,不知如何定义Java类型 现在我有个C++写好的dll,打算用JNI来调用,看了网上的资料.首先先写Java代码,然后用javah命令,最后在jni中调用调用已经存在的dll函数.现在遇到java类型转换的问题. 现在有个函数 jcu_user_handle_t* jcu_net_login( char *ip, unsigned short port, char *user, char *pass, int timeout, jcu_event_cb_t *

在silverlight里自定义一个控件,在自定义控件类里面定义依赖属性出错。

问题描述 在silverlight里自定义一个控件,在自定义控件类里面定义依赖属性出错. 在silverlight里自定义一个控件ReplicationEventComboBox继承ComboBox,在ReplicationEventComboBox类里面定义依赖属性TextProperty. 其中ReplicationEventComboBox中 private TextBlock _text; 字段在方法OnApplyTemplate()中被赋值 var text = this.GetTem

c++-C++宏定义字符串时出错

问题描述 C++宏定义字符串时出错 在用xcode写cocos2d的程序时,遇到一个问题,当调试环境是mac时,需要的文件路径为绝对路径,调试环境是iphone时,文件路径直接是文件名就可以了.为了解决这个问题,尝试写了一下宏.如下: #define RUN_IN_IOS #define TO_STRING(_string) #_string #ifdef RUN_IN_IOS #define GET_FILE(_fileName) TO_STRING(_fileName) #else #def

c++-定义模板类型关于typename和class的疑问

问题描述 定义模板类型关于typename和class的疑问 在百度上查了一下typename和class在表示有子类的类类型时候应该用typename而不用class 那么既然typename比class的使用范围广,那么为什么还要使用class呢?是不是还有什么其他区别? 解决方案 在声明一个template type parameter(模板类型参数)的时候,class和typename意味着完全相同的东西.在c++Template中你完全可以用typename代替class. 一些程序员