• 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
54 wizyt
pytanie zadane 14 marca w C i C++ przez Curiosis Początkujący (440 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 (188,800 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 73 wizyt
pytanie zadane 29 listopada 2018 w C i C++ przez Ciecho Nowicjusz (150 p.)
0 głosów
1 odpowiedź 78 wizyt
pytanie zadane 29 stycznia w C i C++ przez Giero112 Nowicjusz (170 p.)
0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 21 grudnia 2017 w C i C++ przez k3ybo4rd Obywatel (1,180 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

64,898 zapytań

111,368 odpowiedzi

234,330 komentarzy

46,744 pasjonatów

Przeglądających: 210
Pasjonatów: 11 Gości: 199

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.

...