2Danke
ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
283
283
EMPFEHLEN
-
06.11.11 15:07 #1
- Registriert seit
- Oct 2011
- Beiträge
- 31
hi leute, ich möchte eine klasse schreiben welche ein video lädt und abspielen kann. beim ccompilieren bekomme ich immer folgende fehlermeldung:
1>------ Build started: Project: blatt7Teil1, Configuration: Debug Win32 ------
1>Compiling...
1>VideoEngine.cpp
1>c:\users\..\documents\visual studio 2008\projects\blatt7teil1\blatt7teil1\videoengine.cpp(19) : warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
1>c:\users\..\documents\visual studio 2008\projects\blatt7teil1\blatt7teil1\videoengine.cpp(20) : warning C4244: 'initializing' : conversion from 'double' to 'int', possible loss of data
1>c:\users\..\documents\visual studio 2008\projects\blatt7teil1\blatt7teil1\videoengine.cpp(23) : error C2597: illegal reference to non-static member 'VideoEngine::video'
1>c:\users\..\documents\visual studio 2008\projects\blatt7teil1\blatt7teil1\videoengine.cpp(23) : error C2597: illegal reference to non-static member 'VideoEngine::frameNumber'
1>c:\users\..\documents\visual studio 2008\projects\blatt7teil1\blatt7teil1\videoengine.cpp(23) : error C2448: 'VideoEngine::run' : function-style initializer appears to be a function definition
1>Build log was saved at "file://c:\Users\..\Documents\Visual Studio 2008\Projects\blatt7Teil1\blatt7Teil1\Debug\BuildLog.htm"
1>blatt7Teil1 - 3 error(s), 2 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
ich weiß leide rnicht was in meinem programm "static" ist und was nicht...
naja hier mein code:
...header:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#ifndef __VIDEOENGINE_H #define __VIDEOENGINE_H #include <iostream> #include <opencv2/opencv.hpp> class VideoEngine { public: VideoEngine(void); ~VideoEngine(void); cv::VideoCapture video; cv::VideoCapture open(cv::VideoCapture video); void run(cv::VideoCapture video); int frameNumber; private: }; #endif
...cpp:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
#include "VideoEngine.h" using namespace cv; using namespace std; VideoEngine::VideoEngine(void) { } VideoEngine::~VideoEngine(void) { } int frameNumber; VideoCapture video; VideoCapture VideoEngine::open(VideoCapture video){ video.open("C:/Users/../Documents/Micro-dance.wmv"); int width = video.get(CV_CAP_PROP_FRAME_WIDTH); int height = video.get(CV_CAP_PROP_FRAME_HEIGHT); return video; } void VideoEngine::run(video,frameNumber){ while(true){ Mat videoFrame; if (video.read(videoFrame) == false) { break; } frameNumber++; waitKey(30); } }
und die main:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
#include <string> #include <vector> #include <iostream> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; void main(){ }
ich hoffe jemand weiss woran das liegt
-
Hi
Du machst video und frameNumber sowohl in der Klasse, als auch als glob. Var.
Warum?
Die Zeile:
ist Unsinn.Code cpp:1
void VideoEngine::run(video,frameNumber)
Wenn du die vorhandenen Variablen video und frameNumber verwenden willst, lass die () leer.
Sonst müssen die Variablentypen auh mit angegeben werden.
GrußNetiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
06.11.11 15:42 #3
- Registriert seit
- Oct 2011
- Beiträge
- 31
hi,
ich muss der funktion doch parameter übergeben mit der sie arbeiten kann. ich habe doch nichts doppelt initialisiert?
-
Von "doppelt initialisiert" redet ja auch keiner.
Aber
a) es gibt in der h-Datei, in der Klasse, im public-Bereich, eine Variable Video
b) in der cpp-Datei, global, eine Variable video.
Mit frameNumber das Selbe.
Und zu run: Wenn da video und frameNumber der Klasse verwendet werden sollen
brauchst du die nicht in () schreiben, die gibts auch so schon drin.
Falls du wirklich was Anderes übergeben willst soltlest du
a) zur Übersichtlichkeit andere Variablennamen vergeben
b) den Variablentyp dazuschreiben. Das muss einfach so sein.
c) erst beim Aufrufen Werte übergeben.
Du verwechselt das "Machen" der Funktion mit dem Aufrufen.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
06.11.11 16:07 #5
- Registriert seit
- Oct 2011
- Beiträge
- 31
achso, es reicht also die variablen in der header datei zu initialisieren. "jennen die funktionen dann die membervariablen in der klasse oder die globalen, oder beide?
vielen dank mal wieder!
-
Du kannst beide verwenden. Wenn man es ganz genau angeben will:
Die globale mit ::video und die in der Klasse mit this->video
Für frameNumber natürlich auf die selbe Weise.
Und bitte Netiquette §15 beachten.Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
Ähnliche Themen
-
non-static methode mit static class aufrufen?
Von Error999 im Forum JavaAntworten: 5Letzter Beitrag: 30.09.08, 16:22 -
Undefinied reference zu static membern
Von FBIagent im Forum C/C++Antworten: 3Letzter Beitrag: 17.06.06, 20:19 -
uninitialized reference member
Von egabel im Forum C/C++Antworten: 5Letzter Beitrag: 15.04.05, 23:21 -
non-shared member required an object reference?
Von TheSmile im Forum .NET ArchivAntworten: 1Letzter Beitrag: 24.03.05, 19:53 -
static, non-static... was denn nun & warum überhaupt
Von WebOlli im Forum JavaAntworten: 8Letzter Beitrag: 25.05.04, 15:31





Zitieren

Login






