• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmienna wskaźnikowa w klasie

0 głosów
47 wizyt
pytanie zadane 14 marca w C i C++ przez Curiosis Początkujący (420 p.)

Witajcie. Czy dobrze wykonałem poniższe polecenie?

Utwórz klasę zawierającą zmienną wskaźnikową bez konstruktora kopiującego.
#include "pch.h"
#include "Cukierki.h"
#include <cstdlib>

int main()
{
	Cukierki C1("zielony", 8);
	Cukierki C2;
	system("PAUSE");
}


============================================================

#pragma once
#include <iostream>
#include <string>


class Cukierki
{
private:
	std::string kolorCukierka;
	int *liczbaCukierkow;


public:
	Cukierki(std::string kolorCukierka = "czerwony", int liczbaCukierkow = 5);
	virtual ~Cukierki();
};


=========================================================



#include "pch.h"
#include "Cukierki.h"


Cukierki::Cukierki(std::string kolor, int liczba):
	kolorCukierka(kolor), liczbaCukierkow(&liczba)
{
	this->kolorCukierka = kolorCukierka;
	this->liczbaCukierkow = liczbaCukierkow;
	std::cout << std::endl << "Zadzialal konstruktor" << std::endl;
	std::cout << kolorCukierka << liczba << std::endl;
}


Cukierki::~Cukierki()
{

}

 

1 odpowiedź

0 głosów
odpowiedź 14 marca przez adrian17 Mędrzec (174,620 p.)

Nie. Niektóre kompilatory mogą znaleźć problemy za mnie, więc pozwolę sobię pomóc:

<source>:21:44: warning: initializing pointer member 'liczbaCukierkow' with the stack address of parameter 'liczba' [-Wdangling-field]
    kolorCukierka(kolor), liczbaCukierkow(&liczba)
                                           ^~~~~~

Przypisujesz do `liczbaCukierkow` wskaźnik na zmienną tymczasową. Nie ma to wiele sensu. (W zadaniu nie chodzi aby o to, by ta klasa trzymała jakąś zmienną zaalokowaną dynamicznie pod tym adresem?)

<source>:23:25: warning: assigning field to itself [-Wself-assign-field]
    this->kolorCukierka = kolorCukierka;
                        ^
<source>:24:27: warning: assigning field to itself [-Wself-assign-field]
    this->liczbaCukierkow = liczbaCukierkow;
                          ^

Przipisujesz pole do samego siebie. Nie wiem czemu. W końcu linię wyżej już ustawiłeś wartości zmiennych.

Podobne pytania

0 głosów
2 odpowiedzi 71 wizyt
pytanie zadane 29 listopada 2018 w C i C++ przez Ciecho Nowicjusz (150 p.)
0 głosów
1 odpowiedź 68 wizyt
pytanie zadane 29 stycznia w C i C++ przez Giero112 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 145 wizyt
pytanie zadane 21 grudnia 2017 w C i C++ przez k3ybo4rd Obywatel (1,180 p.)
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.Kompozycja

62,400 zapytań

108,542 odpowiedzi

226,582 komentarzy

35,741 pasjonatów

Przeglądających: 199
Pasjonatów: 13 Gości: 186

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...