c ++模板类 - 方法中的类变量不可用

时间:2016-03-09 17:11:24

标签: c++ templates

我是模板类的新手。 我创建了一个,但我无法访问方法中的公共类变量。

程序崩溃了。 在调试模式下观察:没有名为q的成员。 - > CRASH

类别:

#ifndef SIMULATOR_H
#define SIMULATOR_H

#include<queue>
#include<Event.h>
#include <functional>
#include <vector>
#include <iostream>
using namespace std;


template<class T>
class Simulator
{
public:
    std::priority_queue<Event<T>*> q;
    int i;
    Simulator()
    {
    }
    virtual ~Simulator()
    {
        //dtor
    }
    void addEvent(Event<T> *e)
    {
        i = 5; //Watch in debug mode: There is no member named i. --> CRASH
        this->q.push(e); //Watch in debug mode: There is no member named q. --> CRASH
    }
};

#endif // SIMULATOR_H

的main.cpp

Simulator<int> *simulator;
simulator->addEvent(event);

1 个答案:

答案 0 :(得分:5)

Simulator<int> *simulator = new Simulator<int>;
simulator->addEvent(event);

您创建了一个未初始化的指针,因此程序崩溃,因为指针未指向有效对象。

如果你不使用指针会更好,因为在这种情况下(没有看到你的代码)我没有看到任何使用它的理由。