Ich habe zwei öffentliche Klassen; eine statische (DesktopOps
), eine nicht-statische (Args
), und ich versuche, die statischen Variablen der statischen Klasse in main zu initialisieren.Qualified-ID in der Deklaration vor '=' Token
Die Fehlermeldung, die ich immer halten ist:
main.cpp:25: error: qualified-id in declaration before '=' token
Point DesktopOps::window_coords = Point(arg.topleft_x, arg.topleft_y);
^
main.cpp:26: error: qualified-id in declaration before '=' token
Point DesktopOps::window_dims = Point(arg.width, arg.height);
^
hier ein MWE:
#include <opencv2/opencv.hpp>
using namespace cv;
struct Args{
int topleft_x, topleft_y, width, height;
Args(){
topleft_x = topleft_y = width = height = -1;
}
};
struct DesktopOps {
static Point window_coords;
static Point window_dims;
};
int main(){
Args arg();
Point DesktopOps::window_coords = Point(arg.topleft_x, arg.topleft_y);
Point DesktopOps::window_dims = Point(arg.width, arg.height);
}
Ich fühle mich wie ein Idiot, weil ich nicht weiß, dass Statik global deklariert werden muss (wie sonst werden alle Mitglieder es sehen, Doy), aber welche Variable macht keinen Sinn? (Ich habe eine Menge Zwischencode gelöscht btw) – tetris11
Ich meine, dass eine globale Args-Variable mit default ctor zu deklarieren, nur um die Mitglieder in statischen window_coords und window_dims Initialisierung zu verwenden, behebt nur Ihren Kompilierungsfehler, aber ist eine sehr hässliche Art, es zu tun. ... Ich bin sicher, dass du deinen Code besser anordnen wirst. – jpo38
gut ... hier ist das Ding, Arg acually nimmt als '(int argc, char arv ***)' als Argumente, so muss es innerhalb der Haupt sein .... aber ich werde etwas herausfinden – tetris11