[C++/CLI] uchwyt - problem, z ktorym nie moge sie uporac

0

Witam, jest to dosc dla mnie istotne, licze na Wasza pomoc - przez to nie moge 'isc' dalej z projektem bo utknalem w miejscu. Nie owijajac w bawelne, oto wstep:
Klasa matka, window_blind.h:

#pragma once

public ref class window_blind
{ (...) };

i window_blind.cpp:

#pragma once
#include "stdafx.h"
#include "window_blind.h"
(...)

Teraz klasa panel_blind, dziedziczaca po window_blind.
Plik panel_blind.h:

#pragma once
#include "window_blind.h"

public ref class panel_blind : public window_blind
{	
    private:
	__int16 channe;
    public:
	panel_blind();
	~panel_blind();	
        void setChannel(__int16 argChan);
	__int16 getChannel();
(...)
};

oraz panel_blind.cpp:

#pragma once
#include "stdafx.h"
#include "panel_blind.h"

panel_blind::panel_blind() {};
panel_blind::~panel_blind() {};

void panel_blind::setChannel(__int16 argChan) { channel = argChan; }
__int16 panel_blind::getChannel() { return channel; }
(...)

I klasa order, ktora - chcialem - aby dziedziczyla po panel_blind (wiec po window_blind automatycznie).
order.h:

#pragma once
#include "panel_blind.h"

public ref class order : public panel_blind
{
	public:
	order();
	~order();
};

order.cpp nie jest istotne w tej chwili. Na Form1.h mam:

#pragma once
#include "panel_blind.h"
#include "order.h"
(..)
	public ref class Form1 : public System::Windows::Forms::Form
	{
           static panel_blind^ panel = gcnew panel_blind;
           static order^ order1 = gcnew order;
(..)

I caly problem polega na tym, ze to dziala:

panel->setChannel(Convert::ToInt16(comboBox1->Text));
label6->Text=Convert::ToString(panel->getChannel());

ale to juz nie bo zwraca zero (0):

panel->setChannel(Convert::ToInt16(comboBox1->Text));
label6->Text=Convert::ToString(order1->getChannel());

Mam nadzieje ze problem przedstawilem jasko i klarownie pomimo tylu quotow, przynajmniej daje
rozeznanie dobre ;)
Pytania: co robie zle? czy dobrze definiuje klasy przez 'public ref class'? czemu przy powolywaniu uchwytow, bez 'static' wywala mi bledy i co slowko 'static' daje?
No i kurcze bardzo chcialbym zeby dzialalo, staram sie, czytam i nic - a chce sie nauczyc bo mi sie spodobalo tylko doswiadczenia nie mam jeszcze...

Biedny student bardzo prosi o pomoc!

0

nie da sie nic Ci powiedziec w oparciu o te skrawki kodu ktore przedstawiles, poza tym, ze wygladaja poprawnie, wiec raczej problem lezy w danych

postaw breakpoint'y na liniach:

  • label6->Text=Convert::ToString(panel->getChannel());
  • label6->Text=Convert::ToString(order1->getChannel());

i w momencie gdy sie one zlapia, podejrzyj w debuggerze co zwracaja metoda panel->getChannel() a co zwraca metoda order1->getChannel(). zaloze sie, ze order1 zwraca cos innego -- i bedziesz mial zadanie dowiedziec sie czemu -- i to rozwiaze Twoj problem.

btw.

panel->setChannel(Convert::ToInt16(comboBox1->Text));
label6->Text=Convert::ToString(order1->getChannel());

jestes na 100% pewien ze w pierwszej linijce tegoz fragmentu ma byc 'panel' a nie 'order1' ?>

@Twoj drugi watek - rozejrzyj sie po forum, pytanie jest czeste.. w kazdym z dzialow c++ - .net - delphi i odpowiedzi sa podobne..

1 użytkowników online, w tym zalogowanych: 0, gości: 1