Czy pole struktury może być polem obliczalnym?
Ostatnio zmodyfikowano 2017-03-02 23:11
vizzars Temat założony przez niniejszego użytkownika |
Czy pole struktury może być polem obliczalnym? » 2017-03-02 21:46:38 Pytanie jak w temacie. Jak stworzyć (jeśli nie za pomocą struktury) pole, które będzie wynikiem innych pól. Kod: struct VECTOR { string nazwa; int x; int y; int wynik = x * y; }; int main() { cin.sync(); struct VECTOR v[ 10 ]; cin >> v[ 1 ].x; cin >> v[ 1 ].y; cout << v[ 1 ].wynik;
kompiluje się, lecz "wynik" jest niepoprawny. Jak to ugryźć? W kursie nie ma nic na ten temat. |
|
carlosmay |
» 2017-03-02 21:49:29 Użyj metody lub samego kostruktora. |
|
vizzars Temat założony przez niniejszego użytkownika |
» 2017-03-02 21:56:27 Fakt: struct VECTOR { string nazwa; int x; int y; int wynik; void policz(); }; void VECTOR::policz() { wynik = x * y; } int main() { cin.sync(); VECTOR v[ 10 ]; cin >> v[ 1 ].x; cin >> v[ 1 ].y; v[ 1 ].policz(); cout << v[ 1 ].wynik;
teraz działa, liczyłem że można prościej. Dzieki :) |
|
carlosmay |
» 2017-03-02 21:59:41 #include <iostream> #include <string> using namespace std;
struct VECTOR { string nazwa; int x; int y; int wynik; VECTOR() = default; VECTOR( const string & nazwa_, int x_, int y_ ) : nazwa { nazwa_ }, x { x_ }, y { y_ }, wynik { x * y } { } int oblicz() { wynik = x * y; return wynik; } };
int main() { cin.sync(); int a { 2 }, b { 3 }; string str { "indeks jeden jako pierwszy?" }; VECTOR v[ 10 ] { VECTOR { str, a, b } }; cout << v[ 0 ].wynik << '\n'; v[ 1 ].x = 3; v[ 1 ].y = 4; v[ 1 ].oblicz(); cout << v[ 1 ].wynik << '\n'; } |
|
1aam2am1 |
» 2017-03-02 23:11:53 #include <iostream> #include <string> #include <memory> class b { public: b( int p ) : p( p ) { } int p; };
class a { public: int x; int y; std::shared_ptr < b > operator ->() { return std::make_shared < b >( x * y ); } }; int main() { a z; z.x = 2; z.y = 4; std::cout << z->p; }
|
|
« 1 » |