我是模板类的新手。 我创建了一个,但我无法访问方法中的公共类变量。
程序崩溃了。 在调试模式下观察:没有名为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);
答案 0 :(得分:5)
Simulator<int> *simulator = new Simulator<int>;
simulator->addEvent(event);
您创建了一个未初始化的指针,因此程序崩溃,因为指针未指向有效对象。
如果你不使用指针会更好,因为在这种情况下(没有看到你的代码)我没有看到任何使用它的理由。