COLORREF Fehler



  • ich hab keine ahnung warum aber meinem compiler passt folgende syntax nicht und ich komm nicht drauf. vielleicht seh ich den wald vor lauter bäumen nicht:

    const COLORREF CPaintDlg::m_rcColors[8] = {
    		RGB(0, 0, 0), //Schwarz
    		RGB(0, 0, 255), //Blau
    		RGB(0, 255, 0), //Grün
    		RGB(0, 255, 255), //Cyan
    		RGB(255, 0, 0), //Rot
    		RGB(255, 0, 255), //Magenta
    		RGB(255, 255, 0), //Gelb
    		RGB(255, 255, 255), //Weiß
    	};
    

    error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird übersprungen

    Danke schonmal für die Hilfe



  • Das letzte Komma ist auf jeden Fall zu viel. 😃



  • probier mal die 8 wegzulassen:

    const COLORREF CPaintDlg::m_rcColors[] = {
            RGB(0, 0, 0), //Schwarz
            RGB(0, 0, 255), //Blau
            RGB(0, 255, 0), //Grün
            RGB(0, 255, 255), //Cyan
            RGB(255, 0, 0), //Rot
            RGB(255, 0, 255), //Magenta
            RGB(255, 255, 0), //Gelb
            RGB(255, 255, 255) //Weiß
        };
    

    bzw. kannste mal zeigen, was um diesen Schnipsel drum rum steht?



  • um diesen schnipsel herum steht(schon mit den vorgeschlagenen änderungen -> noch immer der selbe error):

    #pragma once
    
    // CPaintDlg-Dialogfeld
    
    class CPaintDlg : public CDialog
    {
    	DECLARE_DYNAMIC(CPaintDlg)
    
    public:
    	const COLORREF CPaintDlg::m_rcColors[] = {
    		RGB(0, 0, 0), //Schwarz
    		RGB(0, 0, 255), //Blau
    		RGB(0, 255, 0), //Grün
    		RGB(0, 255, 255), //Cyan
    		RGB(255, 0, 0), //Rot
    		RGB(255, 0, 255), //Magenta
    		RGB(255, 255, 0), //Gelb
    		RGB(255, 255, 255) //Weiß
    	};
    
    	CPaintDlg(CWnd* pParent = NULL);   // Standardkonstruktor
    	virtual ~CPaintDlg();
    
    // Dialogfelddaten
    	enum { IDD = IDD_PAINT_DLG };
    
    protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    
    public:
    	static const COLORREF m_rcColors[8];
    
    	DECLARE_MESSAGE_MAP()
    private:
    	void DrawLine(CPaintDC* pdc, int iColor);
    public:
    	afx_msg void OnPaint();
    };
    

    is ne eigene header datei. und diese wird dann in der dazugehörigen .cpp verwendet. und zwar definiere ich 6 od 7 verschiedene pinsel und stift ziele und will sie mir in einer schleife alle auf den bildschirm zeichnen lassen.
    hab das ganze aus dem buch c++ in 21 tagen 1 zu 1 abgeschrieben...



  • Erstens: Im Inneren der Klassendefinition brauchst du die Scope-Zuordung ('CPaintDlg::') nicht mit anzugeben.

    Zweitens: Normale (nicht-statische) Member darfst du nicht in der Definition initialisieren - das geht nur im Ctor (btw, für const-Arrays geht das gar nicht).

    Drittens: Wenn alle deine Dialoge mit dem selben Array arbeiten wollen, solltest du es static setzen (und außerhalb der Klassendefinition initialisieren):

    //im Header
    class CPaintDlg : public CDialog
    {
        DECLARE_DYNAMIC(CPaintDlg)
    
    public:
        static const COLORREF CPaintDlg::m_rcColors[8];
        ...
    };
    
    //in der .CPP
    const COLORREF CPaintDlg::m_rcColors[8] = {
        RGB(0, 0, 0), //Schwarz
        RGB(0, 0, 255), //Blau
        RGB(0, 255, 0), //Grün
        RGB(0, 255, 255), //Cyan
        RGB(255, 0, 0), //Rot
        RGB(255, 0, 255), //Magenta
        RGB(255, 255, 0), //Gelb
        RGB(255, 255, 255) //Weiß
    };
    

Anmelden zum Antworten