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

Zmienna wskaźnikowa w klasie

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
363 wizyt
pytanie zadane 14 marca 2019 w C i C++ przez Curiosis Użytkownik (540 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 2019 przez adrian17 Ekspert (328,540 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 134 wizyt
pytanie zadane 29 listopada 2018 w C i C++ przez Ciecho Nowicjusz (150 p.)
0 głosów
1 odpowiedź 232 wizyt
pytanie zadane 26 października 2020 w C i C++ przez komboboost0 Użytkownik (570 p.)
0 głosów
1 odpowiedź 249 wizyt
pytanie zadane 29 stycznia 2019 w C i C++ przez Giero112 Nowicjusz (170 p.)

90,401 zapytań

139,014 odpowiedzi

311,516 komentarzy

60,082 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

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

...