class Scheduler:public Kolejka
{
private:
unsigned long real_time;
Scheduler(void) :real_time(0L){}
Scheduler(const Scheduler &);
Scheduler& operator=(const Scheduler&);
~Scheduler() {}
public:
std::deque <Kolejka*> kolejka;
//... rest of methods, not important here
static Scheduler& getInstance()
{
unsigned long tmptime = 1;
for (int i = 0; i < 10; i++)
{
Kolejka* tmp = new Kolejka(tmptime + 1);
kolejka.push_back(tmp); //error C2228: left of '.push_back' must
//have class/struct/union
//IntelliSense: a nonstatic member reference must be relative
//to a specific object
tmptime++;
delete tmp;
}
static Scheduler instance;
return instance;
}
};
问题是用代码写的,我明白我应该用其他方式来做,但是怎么做?我要求一点帮助:) 我不知道如何摆脱这个问题,我试着没有指针,但问题是一样的。
编辑: 我这样解决了:
void setscheduler()
{
unsigned long tmptime = 1;
for (int i = 0; i < 10; i++)
{
Kolejka * tmp = new Kolejka(tmptime + 1);
kolejka.push_back(tmp);
tmptime++;
}
}
static Scheduler& getInstance()
{
static Scheduler instance;
return instance;
}
};
我只是制作了一个空的双端空格,稍后用
填充它 Scheduler::getInstance().setscheduler();
答案 0 :(得分:0)
您无法从静态方法访问类的“非静态”成员。 静态方法对您正在考虑使用的“对象”一无所知。
为了实现它,在getInstance()函数中创建一个Scheduler类型的局部变量并编辑该变量。然后回来。
同样在单身人士中,如果先前已经创建了实例,则必须返回现有实例,而不是每次都创建新实例。