forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Классы (http://forum.boolean.name/showthread.php?t=15398)

ANIK123 08.10.2011 03:09

Ответ: Классы
 
спасибо pax, но не работает(
см остальной код - обявление player такое же как и cam
а с player проблем нету
Цитата:

А такое объявление это сокращенная запись конструктора?
Не понимаю о чем ты - просто обявляю обьект cam класса cCamera с пользовательским конструктором который не требует аргументов

ЗЫ: Если честно - с player была та же проблема что сейчас с cam, но Я был жутко сонный - проблему решил - но нифига не помню КАК(!?!)
:crazy:
Что за фигня? О_О_О_О

pax 08.10.2011 12:19

Ответ: Классы
 
Вроде скомпилилось
PHP код:

#include "xors3d.h"
#include <iostream>
#include <math.h>
#include "aw_def.h"

int APIENTRY WinMain(HINSTANCE instanceHINSTANCE prevInstanceLPSTR commandLineint commandShow)
{

// set graphics mode
    
xGraphics3D(144090032,true,true);
    
xAppTitle("DATAR");

    
cCameracam = new cCamera();

    
//xAntiAlias(true);
    
    
int light xCreateLight();
    
//xLightColor(light,255,0,0);
    
xLightRange(light,7);
    
xRotateEntity(light,50,-30,0);
    
    
Handle camHandle cam->getCamera();

    
cPlayer *player = new cPlayer("../models/player.fbx"camHandle);

    
int terra xLoadMesh("../models/Terrain.b3d");
    
xScaleEntity(terra,3,1,3);
    
xTerrainShading(terra,true);
    
xEntityPickMode(terra,2);
    
xPositionEntity(terra,0,0,32);
    
int basetex xLoadTexture("../textures/bumped_sand2.jpg");
    
xEntityTexture(terra,basetex);
    
xScaleTexture(basetex,0.1f,0.1f);

    
//xAnimate(player,3,1,1);

        
while(!xKeyDown(KEY_ESCAPE))
    {
        
xMoveEntity(cam->getCamp(),0,0,0.1f); xMoveEntity(player->getModel(),0,0,0.1f);
        
//xPositionEntity(camp,xEntityX(player.getModel()),xEntityY(player.getModel()),xEntityZ(player.getModel()));

        // render scene
        
xUpdateWorld();
        
xRenderWorld();
        
player->Gear();
        
player->debug();
        
// draw scene
        
xFlip();
        }
    return 
0;



ANIK123 08.10.2011 18:06

Ответ: Классы
 
ммм...
запихать все в динамическую память хороший вариант - в данном случае - наверное единственный выход)
спасибо pax!
Но мне все же интерессно - в чем проблема? Наверное это останется ужасной тайной)))
В любом случае спасибо всем кто откликнулся)

dsd 09.10.2011 01:45

Ответ: Классы
 
"cCamera cam();
cPlayer player("../models/player.fbx",cam.getCamera());
xMoveEntity(cam.getCamp(),0,0,0.1f); "
Может в этих скобочках проблема? Зачем они?

impersonalis 09.10.2011 02:20

Ответ: Классы
 
Цитата:

Сообщение от dsd (Сообщение 205169)
"cCamera cam();
cPlayer player("../models/player.fbx",cam.getCamera());
xMoveEntity(cam.getCamp(),0,0,0.1f); "
Может в этих скобочках проблема? Зачем они?

ненужны вроде. :rolleyes:

moka 09.10.2011 02:49

Ответ: Классы
 
Не нужны.

imper, смотрю ты смайликом заразился? :rolleyes:

ANIK123 09.10.2011 05:06

Ответ: Классы
 
Как не нужны?
Это ж обьявление обьекта в котором есть пользовательский конструктор без параметров О_О Или у Вас юмор такой?
Я новичок но вроде все правильно)

dsd 09.10.2011 12:46

Ответ: Классы
 
Вызов конструктора происходит автоматически при создании объекта.

ну или так, если тебе хочется лично вызывать конструктор:

MyClass MemberOne=MyClass();
Так как написал ты вроде можно если конструктор с параметрами :)

ANIK123 09.10.2011 15:34

Ответ: Классы
 
Если Мы задали Свой конструктор то даже если он без ни одного параметра надо полюбому добавлять скобки - ведь конструктор это функция которая вызивается при создании обьекта
Скобок не надо только если Мы не задавали ни одного Своего конструктора - тогда компилятор автоматически подставит свой - ничего не делающий
Как Я уже говорил: Я новичок но вроде все правильно)

dsd 09.10.2011 15:51

Ответ: Классы
 
Ок, ты прав.

Mr_F_ 09.10.2011 15:54

Ответ: Классы
 
Цитата:

Если Мы задали Свой конструктор то даже если он без ни одного параметра надо полюбому добавлять скобки - ведь конструктор это функция которая вызивается при создании обьекта
Скобок не надо только если Мы не задавали ни одного Своего конструктора - тогда компилятор автоматически подставит свой - ничего не делающий
Как Я уже говорил: Я новичок но вроде все правильно)
это чушь. если написать cCamera cam; то конструктор вызовется и без скобок. сам проверь. наверное в них и была трабла, я сразу внимания не обратил. при создании через new, можно их добавлять, можно не добавлять, конструктор тоже одинаково вызовется (опять же можешь проверить).

ANIK123 10.10.2011 02:32

Ответ: Классы
 
Я уже говорил что Я новичок потому извиняюсь за свою тупость)
Вооооот:
Цитата:

class ggg{
public:
ggg();
int fuck;
};
ggg::ggg(){fuck=0;}
int main(){ggg blablabla(); return 0;}
Этот код работает и с скобками и без! О_О


Просто выше написанное Я не правильно понял(
Извините - это меня сбило с толку(
Я должен был сразу Вас послушатся) А то идиот спорить начал - с программистами которые уже понаписали минимум по 1км кода))) В дальнейшем буду читать внимателнее) Спасибо всем кто направил меня на путь истинный)))

UPD
Цитата:

class ggg{
public:
ggg();
int fuck;
int bbb(int);
};
ggg::ggg(){fuck=0;}
int ggg::bbb(int g){return g;}
int main(){ggg blablabla(); blablabla.bbb(1); return 0;}
Работает только без скобок) Я шокирован)))

impersonalis 10.10.2011 10:45

Ответ: Классы
 
[Старпёр_mode]Ну а ситуация с деструктором (который вызывается сам или командой delete, а не x->~MyClass()), конструктором копирования (который вызывается всякий раз при переходе в MyFunc(MyClass x) и присваивании объектов*) не привела к мысли? А когда ты ещё и перегружать операции начнёшь, вот будете веселье... =)
[/Старпёр_mode]
Молодец, что разобрался. Удачи!

*-верно не всегда, см. alenacpp


Часовой пояс GMT +4, время: 04:20.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot