LINUX.ORG.RU

Сообщения orkshaman

 

Зачем нужен forward declaration в C++?

Форум — Development

Не холивара ради, сравнение кода Swift и C++:

class Object {

	let inventory = Inventory()

}

class Inventory {

	var items = [Object]()

}

class Human: Object {}

class Sandals: Object {}

class Socks: Object {}

let human = Human()
human.inventory.items.append(Socks())
human.inventory.items.append(Sandals())

print("Items count: \(human.inventory.items.count)")

Собираем, запускаем:

swiftc includeEachOther.swift -o includeTest && ./includeTest 
Items count: 2

C++:

#include <vector>
#include <iostream>

using namespace std;

class Object {

public:

	Inventory *inventory;

};

class Inventory {

public:

	vector<Object *> items;

};

class Human: public Object {};

class Sandals: public Object {};

class Socks: public Object {};

int main() {

	auto human = new Human();

	human->inventory = new Inventory();
	
	human->inventory->items.push_back(new Sandals());
	human->inventory->items.push_back(new Socks());	

	cout << "Items count: " << human->inventory->items.size() << endl;

	return 0;

};

Собираем, запускаем:

 g++ -std=c++11 includeEachOther.cpp -o includeTest && ./includeTest

includeEachOther.cpp:10:2: error: unknown type name 'Inventory'
        Inventory *inventory;
        ^

Если добавить forward declaration - class Inventory в .cpp, то все заработает. Я не понимаю почему в C++ нужно это в 2017 году, кто-нибудь может объяснить?

 ,

orkshaman
()

Реквест книг, примеров по работе с памятью, современному стилю C++

Форум — Development

Решил сделать чудо игровой-движок на С++, посмотрел как с Memory Management обстоит дело - завезли подсчет ссылок shared_ptr и подобное, лямбды и пр. Попробовал сам добавить map с shared_ptr, как минимум код получился не читаемым. Ребята, подскажите пожалуйста примеры и книги для современного C++.

 

orkshaman
()

Сделал Open Source игру для Android (Rajawali)

Форум — Games

Привет ЛОР. Я портировал свою мини-игру Demon's Cave на андроид и сделал исходный код доступным по лицензии GPL v2. Игра сделана на основе OGLES2 библиотеки Rajawali. По геймплею напоминает Flappy Bird, или гоночки из Battletoads. Если есть желание доработать или сделать клон - я только за. Однако графические ресурсы и музыка принадлежат их авторам, большая часть доступна по лицензии CC.

Google Play: https://play.google.com/store/apps/details?id=com.demensdeum.demonscave

Исходники: https://github.com/demensdeum/DemonsCaveAndroid

Авторы: http://demensdeum.com/games/demonsCave/info.html

Перемещено Falcon-peregrinus из development

 ,

orkshaman
()

Разница между эмуляцией и виртуализацией

Форум — Talks

Может кто-нибудь популярно объяснить разницу между виртуализацией и эмуляцией? Если qemu эмулятор, то почему VirtualBox нет?

 ,

orkshaman
()

Не закрывается окно перед циклом (pygtk)

Форум — Development

Пишу редактор карт для игрушки на pygtk и pygame, для загрузки файлов использую pygtk и gtk.FileSelection. Проблема в том что после вызова dialog.hide() и gtk.main_quit() окно dialog=gtk.FileSelection не закрывается, тоесть оно дожидается пока закончится цикл загрузки карты и только потом закрывается. Подскажите как можно проверить статус завершения pygtk?

Проблемное место (линия 170 файла editor121.py):

def open_map(w):

	global dialog,edit_mode;
	
	filename=dialog.get_filename();	

	dialog.hide()
	
	gtk.main_quit();

#дальше идет цикл загрузки карты

Исходники: Исходник редактора и движка

orkshaman
()

Поддержка DGA убрана?

Форум — Linux-hardware

Хотел попробовать DGA ускорение для SDL, выдало ошибку:

Unable to initialize SDL: No available video device
SDL с поддержкой dga собран. Запустил тестовую программу dga:
dga                                                 
X Error of failed request:  XF86DGANoDirectVideoMode
  Major opcode of failed request:  130 (XFree86-DGA)
  Minor opcode of failed request:  1 (XF86DGAGetVideoLL)
  Serial number of failed request:  15
  Current serial number in output stream:  15
Посмотрел в лог Xorg, ошибок нет:
[  2290.245] (II) Loading extension XFree86-DGA
Дальше dga в логе не упоминается. Наткнулся xorg/driver/xf86-video-intel на то что поддержка DGA была убрана из драйвера intel, если я правильно все понял то работать с DGA теперь нельзя совсем? Видеокарта Intel GMA HD на Pentium g6950.

orkshaman
()

Вебкамера Logitech Quickcam Express Plus не работает

Форум — Linux-hardware

ядро 2.6.35-rc6

dmesg:

[  615.274628] usb 1-1.4: New USB device found, idVendor=046d, idProduct=092f
[  615.274633] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  615.274636] usb 1-1.4: Product: Camera
[  615.274639] usb 1-1.4: Manufacturer:         
[  615.274733] usb 1-1.4: usb_probe_device
[  615.274736] usb 1-1.4: configuration #1 chosen from 1 choice
[  615.274874] usb 1-1.4: adding 1-1.4:1.0 (config #1, interface 0)
[  615.274918] spca561 1-1.4:1.0: usb_probe_interface
[  615.274920] spca561 1-1.4:1.0: usb_probe_interface - got id
[  615.274922] gspca: probing 046d:092f
[  615.282799] input: spca561 as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/input/input5
[  615.282852] gspca: video0 created
[  615.282865] drivers/usb/core/inode.c: creating file '004'

lsmod:

Module                  Size  Used by
gspca_spca561           9714  0 

lsusb:

Bus 002 Device 003: ID 09da:000a A4 Tech Co., Ltd Port Mouse
Bus 002 Device 002: ID 8087:0020  
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 046d:092f Logitech, Inc. QuickCam Express Plus
Bus 001 Device 002: ID 8087:0020  
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

в /dev есть video0 и v4l ekiga выдает скриншот

xawtv ничего не показывает, в консоли вывод:

This is xawtv-3.95, running on Linux/x86_64 (2.6.35-rc6)
WARNING: v4l-conf is compiled without DGA support.
/dev/video0 [v4l2]: no overlay support
v4l-conf had some trouble, trying to continue anyway
Warning: Cannot convert string "-*-ledfixed-medium-r-*--39-*-*-*-c-*-*-*" to type FontStruct
ioctl: VIDIOC_G_STD(std=0x7fc989795b6a [PAL_B1,PAL_H,PAL_D,PAL_D1,PAL_M,PAL_N,PAL_60,NTSC_M,?,SECAM_B,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,ATSC_16_VSB,(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null)]): Invalid argument
ioctl: VIDIOC_S_STD(std=0x0 []): Invalid argument
no way to get: 384x288 32 bit TrueColor (LE: bgr-)

Два года назад на убунте работала на ура. Подскажите что можно сделать чтобы она заработала сейчас.

orkshaman
()

RSS подписка на новые темы