Znaleźć błędy

0

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

#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;
} 
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.

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
0

Mam dwie wersje, która lepsza?

 #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;
}
#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;
} 
0

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

0
#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;
}

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