C++ funktion() should have been declared inside namespace?
Hallo, ich arbeite gerade an einer Header Datei in C++. Aber ich kann nun nicht mehr weitermachen weil ständig ein Fehler auftaucht:
meinHeader.h:21:38: error: 'void meinNamespace::draw(int, int)' should have been declared inside 'meinNamespace'
Ich kann im Internet nichts hilfreiches finden und weiß nicht warum der Fehler auftaucht. Hier die betroffenen Codeabschnitte:
#include <Windows.h>
#include <WinUser.h>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include "meinHeader.h"
#define PI 3.14
enum meinNamespace::color {
DARKBLUE = 1,
DARKGREEN,
DARKTEAL,
DARKRED,
DARKPINK,
DARKYELLOW,
GRAY,
DARKGRAY,
BLUE, GREEN,
TEAL,
RED,
PINK,
YELLOW,
WHITE
};
struct meinNamespace::setColor {
color _c;
HANDLE _console_handle;
setcolor(color c, HANDLE console_handle)
: _c(c), _console_handle(0)
{
_console_handle = console_handle;
}
};
void meinNamespace::draw(int x, int y) {
HWND myconsole = GetConsoleWindow();
HDC mydc = GetDC(myconsole);
int pixel =0;
COLORREF COLOR= RGB(255,255,255);
for(double i = 0; i < PI * 4; i += 0.05) {
SetPixel(mydc,pixel,(int)(50+25*cos(i)),COLOR);
pixel+=1;
}
ReleaseDC(myconsole, mydc);
}
void meinNamespace::drawSquare(int aa, int ab, int ba, int bb) {
draw(aa,bb);
}
Header:
#ifndef MEINHEADER_H
#define MEINHEADER_H
namespace meinNamespace {
enum color {
DARKBLUE=1,DARKGREEN,
DARKTEAL,DARKRED,
DARKPINK,DARKYELLOW,
GRAY, DARKGRAY,
BLUE,GREEN,
TEAL,RED,
PINK,YELLOW,
WHITE
};
struct setcolor;
void meinNamespace::draw(int x, int y);
void meinNamespace::draw(int a, int b);
}
#endif
Die Funktionen sollen in ein Konsolenfenster Pixel schreiben, ob sie funktionieren weiß ich noch nicht und sie sind auch noch nicht fertig. Ich weiß nicht wo der Fehler verursacht wird. Ich hoffe jemand kann mir da helfen
LG
Die Fehlermeldung steht im Fragetitel
Ich habe versehentlich etwas falsch kopiert, im Header sind die Deklarationen richtig:
struct setColor;
void draw(int x, int y);
void drawSquare(int aa, int ab, int ba, int bb)
2 Antworten
Wenn du die Änderungen vorgenommen hast, die du in deiner Ergänzung beschrieben hast, alles korrekt gespeichert ist, dann sollte der Fehler nicht mehr auftreten.
Na beim ersten ist "drawPixel" ja nicht" draw" und beim zweitem ist "meinHeader" nicht "meinNamespace".
Also irgendwo hast du da noch Inkonsistenzen drinnen.
void meinNamespace::draw(int x, int y);
void meinNamespace::draw(int a, int b);
Zum einen ist das der gleiche Prototyp, zum anderensolltest Du hier bei der decl kaum den namespace-qualifier angeben.
Entschuldigung, das habe ich versehentlich falsch kopiert da steht eigentlich
struct setColor;
void draw(int x, int y);
void drawSquare(int aa, int ab, int ba, int bb)
Es kommt aber immer: