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

Visual C++ ( expression must have (pointier-to-) function type

Ostatnio zmodyfikowano 2013-11-14 18:05
Autor Wiadomość
4you
Temat założony przez niniejszego użytkownika
Visual C++ ( expression must have (pointier-to-) function type
» 2013-11-14 15:46:10
o co tu chodzi: expression must have (pointier-to-) function type

stworzylem w klasie " char zmienna_tekstowa;"
w main() tworze nowa klase: klasa nazwa_klasy;
i gdy pisze nazwa_klasy.zmienna_tekstowa("nazwa_zmiennej_tekstowej"); wywala mi błąd:
expression must have (pointier-to-) function type
P-96258
kubawal
» 2013-11-14 15:50:19
nazwa_klasy.zmienna_tekstowa("nazwa_zmiennej_tekstowej")

Czemu korzystasz ze składowej jak z metody?
P-96259
4you
Temat założony przez niniejszego użytkownika
» 2013-11-14 15:57:33
Nie do końca rozumiem o co chodzi. Może mi to jakoś rozpiszesz? Jak mam wywołać nazwe jakiegoś obiektu w klasie?
P-96261
pekfos
» 2013-11-14 17:05:23
obiekt.nazwa
?
P-96266
4you
Temat założony przez niniejszego użytkownika
» 2013-11-14 17:45:55
no tak, to wiem. Ale tak jak wyżej napisałem to mi wywala błąd.

Otóż to mój kod klasy w skrócie:

C/C++
class Nacja()
{
    string klasa;
};

int main()
{
    Nacja obiekt;
    obiekt.klasa( "tralalala" );
}

i niby gdzie tu jest blad?
P-96270
Monika90
» 2013-11-14 17:51:28
Składowa klasa jest prywatna, a poza tym std::string nie ma operatora (). To są absolutne podstawy.
P-96271
4you
Temat założony przez niniejszego użytkownika
» 2013-11-14 17:57:28
@Monika90, oczywiście masz rację, ale sprawdzałem to też z:
C/C++
#include <iostream>
#include <conio.h>
#include <string>
using namespace std;

class Nacja
{
public:
    char PiechotaN[ 10 ], RycerzN[ 10 ], KonnyRycerzN[ 12 ];
    int PiechotaI, RycerzI, KonnyRycerzI; // Ilość Jednostek
    int P_atak, P_obrona, R_atak, R_obrona, KR_atak, KR_obrona; // atak i obrona Piechoty, Rycerze, KonnegoRycerza
};

void wybor( int wybor )
{
    switch( wybor )
    {
    case 1:
        {
            Nacja Rzymianie;
            cout << "\n\tWybrales Rzymian."; // Stworzyc historie.
            Rzymianie.KonnyRycerzN( "Konny Rycerz" );
            break;
        }
    case 2:
        {
            Nacja Germanie;
            cout << "\n\tWybrales German.";
           
            break;
        }
    case 3:
        {
            Nacja Galowie;
            cout << "\n\tWybrales Galow.";
           
            break;
        }
        default:
        {
            cout << "Nie mamy " << wybor << " nacji, mamy tylko 3.\n\n\tKONIEC GRY";
            break;
        }
    }
}

int main()
{
    int w, LP, LR, LKR; // w - wybor, LP - Liczba Piechoty, LR - Liczba Rycerzy, LKR - Liczba Konnych Rycerzy
   
    cout << "1.Rzymianie\n2.Germanie\n3.Galowie\n\tWybor: ";
    cin >> w;
    wybor( w ); // wybieramy nacje.
    getch();
}
I niestety wywala błąd tylko i wyłącznie w
Rzymianie.KonnyRycerzN("Konny Rycerz");
P-96272
Monika90
» 2013-11-14 18:02:57
A co chesz osiągnąć za pomocą
Rzymianie.KonnyRycerzN( "Konny Rycerz" );
?
Jeżeli chcesz pzypisać ten łańcuch znaków, to musisz użyć strcpy. Ale radzę ci zmiast tablic znaków używać std::string, wtedy będziesz mógł użyć po prostu operatora =.
C/C++
class Nacja
{
public:
    string KonnyRycerzN;
};

Rzymianie.KonnyRycerzN = "Konny";

P-96273
« 1 » 2
  Strona 1 z 2 Następna strona