Qualifiziert-id in der declaration before '=' token
Ich habe zwei public-Klassen; eine statische (DesktopOps
), eine nicht-statische (Args
), und ich bin versucht zu initialisieren, die statischen Variablen der statischen Klasse in main.
Die Fehlermeldung die ich erhalte 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);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht wirklich verstehen, was Sie versuchen zu tun....aber statische Variablen angelegt werden muss, im globalen Gültigkeitsbereich, außerhalb der main-Funktion:
Aber diese Globale variable Args keinen Sinn....
(int argc, char arv ***)
als Argumente, so ist es nicht müssen innerhalb von main.... aber ich werde etwas herauszufindenDesktopOps::window_coords
undDesktopOps::window_dims
alsPoint(0,0);
und ändern Sie Sie in Ihrem ersten Zeilen der main.static
bedeutet nichtconst
....Point
Typ-Präfix, das zweite mal um das problem. Ich war redeclaring die gleiche verdammte Variablen...wieder einmal habe ich nicht an das Leben selbstmain
FunktionDesktopOps::window_coords.x = 3
zum Beispiel ändern müssen, die static-variable.In der Struktur, die Sie erklären die member-Variablen, aber wenn Sie definieren Sie Sie nicht tun können, es in eine Funktion, muss es getan werden in den globalen Bereich, wie
Leider kann nicht vorgenommen werden, da die Initialisierung ist abhängig von der örtlichen
arg
variable in dermain
Funktion. Das heißt, Sie müssen die definition und die Initialisierung in zwei Schritten:Arg arg()
einer Funktionsdeklaration?arg
keine?