Tech, szoftvertervezés és programozás

Szoftverfejlesztés, Shaderprogramozás, DirectX

  • A betűméret növelése
  • Alapértelmezett betűméret
  • A betűméret csökkentése
Címlap Fórum
NyisztorKaroly.org
Helló, vendég
Kérjük, hogy jelentkezz be vagy regisztrálj.    Elfelejtetted a jelszavadat?
Szakmai kérdések
(1 fő olvassa) 1 vendég
Üdvözöllek a Játékfejlesztés fórumon!
A végére
TÉMA: Szakmai kérdések
#105
admin (Adminisztrátor)
Adminisztrátor
Hozzászólások: 62
graph
A felhasználó most jelen van Kattints ide a felhasználó profiljának megtekintéséhez
Vá: Szakmai kérdések 1 éve, 9 hónapja  
Rossz helyen van a csillag. A p egy statikus, int* típusú mutató (te pedig egy dereferált pointernek az értékét próbálod inicilizálni a cpp fájlban).

Az ilyen jellegű hibák elkerülése végett azt szoktam javasolni, hogy midig a típushoz ütköztessük a csillagot, azaz:
Kód:

type* ptr;

és nem
Kód:

type *ptr;
 
Naplózott Naplózott  
  Az adminisztrátor megtiltotta a mindenki által történő hozzászólást.
#106
Flip (Felhasználó)
Fresh Boarder
Hozzászólások: 4
graphgraph
A felhasználó távol van Kattints ide a felhasználó profiljának megtekintéséhez
Vá: Szakmai kérdések 1 éve, 9 hónapja  
Tényleg!, köszönöm a gyors segítséget, magamtól nem jöttem rá

Ha nem probléma, lenne még egy hasonló kérdésem. Olvastam a függvény mutatós részt a könyvben és a 9.6.fvptr2.cpp-t ki is próbáltam, ott a fordító először ezt írta:
error C3867: 'ClassA::g': function call missing argument list; use '&ClassA::g' to create a pointer to member

majd ha a '&ClassA::g' javaslattal éltem, akkor szépen működött is a dolog.

Ezután viszont próbáltam kicsit kreatívabban használni a függvény pointereket, és nem sikerült még rájönnöm, hoy hogyan lehet olyan függvény pointert írni, mely 2 különböző osztály ugyanolyan szignatúrályú metódusára tudna mutatni.
Tehát pl ilyet:
Kód:


class ClassA
{
public:
void fv() 
{
cout << "a.fv()" << endl;
}
};

class ClassB
{
public:
void fv() 
{
cout << "b.fv()" << endl;
}
};

int main()
{
void (*fvPtr) ();
ClassA objA;
ClassB objB;
fvPtr = objA.fv;
return 0;
}



Megoldhatók a hasnoló esetek c++ban?
 
Naplózott Naplózott  
  Az adminisztrátor megtiltotta a mindenki által történő hozzászólást.
#107
Quantum (Felhasználó)
Junior Boarder
Hozzászólások: 23
graphgraph
A felhasználó távol van Kattints ide a felhasználó profiljának megtekintéséhez
Vá: Szakmai kérdések 1 éve, 9 hónapja  
Heló Carlos!
Első sorban egy régebbi segítséget szeretnék megköszönni. Valamiért hiába írtam, nem akarta elküldeni a postomat vagy a rendszer, vagy az én gépem. Aztán elfelejtődött a dolog.

Most ismét segítségedet kérném, jelenleg ténylegesebb kérdésem van.
Létrehoztam egy dinamikus karaktertömb típusú függvényt, amit mikor meghívok, a visszatérési értékét szeretném egy ugyancsak dinamikus karaktertömbnek átadni. Aztán egy olyan gond üti fel a fejét, hogy az első érték-átadás után meghal a program. Ellenben ha a függvényt egy standard kiiratásra küldöm, minden tökéletesen kiíródik, tehát gondolom valahol a változómmal lehet a hiba.

Íme a kódom (kiemelt részlete):


#include <fstream>
#include <iostream>
#include <cstring>

char* Kiemel(char sor[], int a, char k);

int _tmain(int argc, _TCHAR* argv[])
{
std::ifstream map;

map.open("ITEMS.txt");

if(map.fail())
{
std::cerr << "weeejh!" << std::endl;
std::cin.get(); exit(1);
}

while(!map.eof())
{
int character = 0, exit = 1;
char sor[150];
map.getline(sor, sizeof(sor));
//std::cout << sor << std::endl;
while(exit)
{
char* ki;
ki = Kiemel(sor, character, '>');
std::cout << ki << " " << character << std::endl;
delete ki;
}
}
map.close();
std::cin.get();
return 0;
}


char* Kiemel(char sor[], int a, char k)
// Az adott sorban a kezdő integertől kiemel egy sztringet k karakterig (a k karakter - 1 helyig)
{
char* kész;
int n = 0;
for (int i = a; i < 50; i++)
{
if (sor[i] == k || sor[i] == '\0') break;
n = i + 1;
}
kész = new char[n - a];
kész[n - a] = '\0';
// azért zártam le \0-val a sort, mert különben a sztring hossza ellenére a végét memóriaszeméttel tölti fel, kiszámíthatatlan hosszan

for (int i = a; i < n; i++)
{
kész[i - a] = sor[i];
}
return kész;
}


Annyit még hozzá tennék, hogy ez egy 2D-s játéknak a része és azért keresi a '>' karaktert, mert így ér véget egy azonosító a fájlban. Pl.: <AZONOSITO>tulajdonsag<MASIKAZONOSITO>ujtulajdonsag
Segítségedet előre is köszönöm!
 
Naplózott Naplózott  
  Az adminisztrátor megtiltotta a mindenki által történő hozzászólást.
#108
Quantum (Felhasználó)
Junior Boarder
Hozzászólások: 23
graphgraph
A felhasználó távol van Kattints ide a felhasználó profiljának megtekintéséhez
Vá: Szakmai kérdések 1 éve, 9 hónapja  
Már lényegtelen, sikerült beüzemeltetni a stringeket.
 
Naplózott Naplózott  
  Az adminisztrátor megtiltotta a mindenki által történő hozzászólást.
#109
admin (Adminisztrátor)
Adminisztrátor
Hozzászólások: 62
graph
A felhasználó most jelen van Kattints ide a felhasználó profiljának megtekintéséhez
Vá: Szakmai kérdések 1 éve, 9 hónapja  
@Flip: ez már összetettebb eset, mivel az adott osztály this pointerét is át kell adni. Bővebben lásd http://www.newty.de/fpt/callback.html#member
 
Naplózott Naplózott  
  Az adminisztrátor megtiltotta a mindenki által történő hozzászólást.
#110
Flip (Felhasználó)
Fresh Boarder
Hozzászólások: 4
graphgraph
A felhasználó távol van Kattints ide a felhasználó profiljának megtekintéséhez
Vá: Szakmai kérdések 1 éve, 9 hónapja  
Köszönöm a linket, elolvastam - hasznos volt.
 
Naplózott Naplózott  
  Az adminisztrátor megtiltotta a mindenki által történő hozzászólást.
Az elejére