Hallo zusammen, hab da ein paar Probleme mit der objektorientierten Programmierung in C++. Es geht um die Verarbeitung von Warteschlangen.
Folgendes ist der Aufbau.
IntQueue.h
#pragma once
class IntQueue
{
public:
IntQueue(void);
virtual ~IntQueue(void);
virtual void add(int) = 0;
virtual bool old(int& value) = 0;
virtual int remove() = 0;
};
IntQueueIndexed.h
#pragma once
#include "intqueue.h"
class IntQueueIndexed :
public IntQueue
{
public:
IntQueueIndexed(int standard=10);
~IntQueueIndexed(void);
static void add(int add\_int);
virtual bool old(int& value);
virtual int remove(int);
private:
int \*intZeiger;
int reserviert;
};
IntQueueIndexed.cpp
#include "IntQueueIndexed.h"
IntQueueIndexed::IntQueueIndexed(int standard)
{
this-\>intZeiger = new int [standard];
this-\>reserviert = standard;
}
IntQueueIndexed::~IntQueueIndexed(void)
{
}
void IntQueueIndexed::add(int add\_int)
{
}
int IntQueueIndexed::remove(int)
{
return 0;
}
bool IntQueueIndexed::old(int &value)
{
return true;
}
IntQueueIndexed erbt von IntQueue, IntQueue soll Abstrakt sein.
Jetzt zu den Fragen.
-
Wenn ich in main den Aufruf starte:
int add_int=2;
IntQueueIndexed::add(add_int);
Dann sagt er mir, ich würde eine nicht-statische Klasse aufrufen. Deshalb habe ich vor die Methode das „static“ geschrieb. Es funktioniert, die Frage ist, ist das zulässig? Oder gibt es einer andere bessere Lösung?
- Ich habe mit intZeiger ja einen Speicherbereich reserviert. Ich kann damit nur (noch) nicht umgehen. Wie greife ich denn in der Methode IntQueueIndexed::add(add_int) darauf zu? Wie komme ich an das Feld ran?
Ich hoffe es ist nicht zu unübersichtlich, und hoffe mir kann jemand helfen. Danke im vorraus.
MFG Philipp