Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czy pole struktury może być polem obliczalnym?

Ostatnio zmodyfikowano 2017-03-02 23:11
Autor Wiadomość
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:
C/C++
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.
P-158464
carlosmay
» 2017-03-02 21:49:29
Użyj metody lub samego kostruktora.
P-158466
vizzars
Temat założony przez niniejszego użytkownika
» 2017-03-02 21:56:27
Fakt:
C/C++
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 :)
P-158467
carlosmay
» 2017-03-02 21:59:41
C/C++
#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'; // 6
    v[ 1 ].x = 3;
    v[ 1 ].y = 4;
    v[ 1 ].oblicz();
    cout << v[ 1 ].wynik << '\n'; // 12
}
P-158468
1aam2am1
» 2017-03-02 23:11:53
C/C++
// Example program
#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;
}
P-158470
« 1 »
  Strona 1 z 1