Statyczny wskaźnik w klasie - jak go przypisać i wyłuskać?

0

Cześć, mam taki problem: posiadam klasę, w której mam zadeklarowany statyczny wskaźnik do liczby double - tj.:

class Klasa
{
double result; //result = *wsk * x;
static double* wsk;
static void set_wsk(double* set_wsk)
{
Klasa::*wsk = set_wsk; //błąd! - przypisanie wartości do wskaźnika -> tradycyjnie wygląda to tak: wsk = set_wsk;
}
void use_wsk(double x)
{
result = *Klasa::wsk*x; //błąd! - wyłuskanie wartości z pod wskaźnika -> tradycyjnie wygląda to tak: result = *wsk*x;
}
};

Niestety mam problem z przypisaniem do niego wartości oraz z wyłuskaniem tej wartości.
Czy mógłby mi ktoś pomóc?
Próbowałem już wielu opcji, a te które wydają mi się najbardziej prawidłowe (te umieszczone wyżej), również nie działają ;-(

Z góry dziękuję za pomoc!

0

Hę?

class Klasa
{
 double result; //result = *wsk * x;
 static double* wsk;
 
 static void set_wsk(double* set_wsk)
 {
  Klasa::wsk = set_wsk;
 }
 
 void use_wsk(double x)
 {
  result = *Klasa::wsk*x;
 }
};

Nie rozumiem w czym problem - ten kod powyżej działa (jedynie zmieniłem pierwsze ::*wsk na ::wsk).

0
#include <iostream>
using namespace std;

class Class
{
public:
	static int* pointer;
	
	static void assign(int* otherPointer) {
		Class::pointer = otherPointer;
	}
	
	static int use(int value) {
		return (*Class::pointer)*value;
	}
};

int* Class::pointer = nullptr;

int main() {
	
	int value = 10;
	Class::assign(&value);
	cout << Class::use(value) << endl;
	return 0;
}
0

Ha! Dzięki Panowie - rzeczywiście wszystko jest ok!
U mnie to nie działało, bo sprawdzałem to u siebie w klasie, którą tworzę i jest ona w dwóch plikach .h i .cpp -> natomiast zapomniałem w pliku .cpp zadeklarować zmienną statyczną i kompilator się pluł o coś i nie wiedziałem o co kaman ;D.
pozdrawiam :)

Przepraszam, że jeszcze pociągnę ten niby banalny temat, ale mam kolejny problem i nic nie przychodzi mi do głowy co jest nie tak.
Mam taki kod:

class Klasa
	{
	public:
	double result;
	static double* wsk;
	static void (Klasa::*ptr_fun)();
	double variable;

	void use_fun()
		{
		(this->*ptr_fun)();
		}
	void fun()	
		{
		variable = result;
		*Klasa::wsk += variable;	//<- gdy dodam tą linijkę to wywala mi błąd fatal error LNK1120: 1 unresolved externals
		}
	};
void (Klasa::*Klasa::ptr_fun)() = &Klasa::fun;

Gdy chcę użyć wskaźnik do zewnętrznej zmiennej (zapisanej w innej klasie) w funkcji na którą jest statyczny wskaźnik to wywala mi błąd fatal error LNK1120: 1 unresolved externals.
Czy może mi ktoś wyjaśnić co jest nie tak?

0

Nie chcę być upierdliwy ;-), ale czy byłby wstanie ktoś pomóc odnośnie mojego poprzedniego posta? ;-)

Jeśli to komuś pomoże, to jeśli zamienię wskaźnik na niestatyczny to wszystko się ładnie kompiluje. Natomiast zastanawiam się dlaczego nie mogę korzystać ze statycznego wskaźnika?

0

Zapewne brakuje Ci gdzieś czegoś w stylu:

double* Klasa::wsk = null;
0

Porażka... Ten sam błąd co poprzednio O_o
Tym razem miałem zadeklarowane zmienne statyczne, ale bez operatora zakresu i nazwy klasy -.-
Dlatego, że zmiennych jest sporo to przeoczyłem to, a z uwagi chyba na porę kiedy próbowałem dojść do tego (chyba koło 2:00) to tego nie dostrzegłem...

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