我对模板类完全陌生。
我已经创建了一个,但是无法访问方法中的公共类变量。

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

类:

#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);

最佳答案

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


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

最好避免使用指针,因为在这种情况下(没有看到您的代码),我看不出有任何理由使用它。

关于c++ - c++模板类-方法中的类变量不可用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35898147/

10-11 18:17