Znaleźć błędy

Znaleźć błędy
IX
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:38
0

Mam za zadanie znaleźć błędy w kodzie i poprawić je. Proszę o pomoc.

Kopiuj
#include<iostream>
using namespace std;
struct S {
  	S(int i){ this->x = i;} // tutaj wskaźnik ??
  	~S(){}
  	int x;
  	static const int sci = 200;// jak static to nie const
  	int y = 999; 
}
void main(){
  	S *ps = new S(300);
  	ps->x = 400;
 
  	S s;
  	s.x = 500;
} 
Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 2 lata
2
  • Po klamrze kończącej ciało klasy nie ma średnika.
  • Typem zwracanym main musi być int.
  • W S s; brakuje argumentu konstruktora.
  • Brakuje delete ps;.

Poza tym kod jest poprawny w sensie języka, nie ma za to żadnego sensu. ;-)

W przyszłości po prostu wrzucaj kod ideone.com, czytaj jakie błędy się pojawiają i poprawiaj.


"(...) otherwise, the behavior is undefined".
NI
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 5 lat
  • Lokalizacja:Warszawa
  • Postów:535
1

a więc:

  1. w konstruktorze ustawiasz wartość x przed jego zdefiniowaniem
    2.const static może być, ja tam błędu nie widzę
    3.nie jestem pewien czy można przypisać wartość zmiennych które nie są stałe w definicji

Programuje i programuje ,przychodzi człowiek "o niższej inteligencji" i rok pracy zmarnowany
Endrju
1. ? 3. Można.
NI
1 mi kompilator nie pozwala-pisze, że zmienna nie istnieje 3-nie byłem pewien
IX
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:38
0

Mam dwie wersje, która lepsza?

Kopiuj
 #include<iostream>
using namespace std;
struct S {
    S() : x() {}       
    S(int i) : x(i) {} 
    ~S(){}
    int x;
    static const int sci = 200;
    int y = 999; 
}; 
int main(){
    S *ps = new S(300);
    ps->x = 400;

    S s;
    s.x = 500;
}
Kopiuj
#include<iostream>
using namespace std;
struct S {
    S(int i){
        this->x = i;
    }
    ~S(){}
    int x;
    static const int sci = 200;
    int y = 999;
};
int main(){
    S *ps = new S(300);
    ps->x = 400;
    S *s = new S(20);
    s->x = 500;
} 
NI
IX
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 10 lat
  • Postów:38
0

Coś z tym y jeszcze nie tak, bo mi kompilator błąd wywala, mimo, że ideone.com nie widzi błędów.

MO
  • Rejestracja:około 10 lat
  • Ostatnio:5 dni
  • Lokalizacja:Tam gdzie jest (centy)metro...
0
Kopiuj
#include<iostream>

using namespace std;

struct S {
    S() : x(), y(999) {}       
    S(int i) : x(i), y(999) {} 
    ~S(){}
    int x;
    static const int sci = 200;
    int y; 
}; 

int main(){
    S *ps = new S(300);
    ps->x = 400;
    delete ps;
 
    S s;
    s.x = 500;
}

Każdy problem w informatyce można rozwiązać, dodając kolejny poziom pośredniości,z wyjątkiem problemu zbyt dużej liczby warstw pośredniości — David J. Wheeler

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.