Всем привет! Это продолжение предыдущей темы, в которой я хочу найти элегантное решение.
Почти решил свою задачку, но уперся в одном месте. Подскажите как обойти эту ошибку Оказывается что моя задача аналогична задаче про фигуры. Есть разные классы у которых есть общие и различные процедуры.
class Shape{
virtual void Center() = 0;
}
class Line: public Shape{
void Center() {...};
// нет процедуры вычисления площади
}
class Circle: public Shape{
void Center() {...};
double Square() {...}; // вычисляется площадь
}
void FindCenter(vector<Shape*> shape) {
for (vector<Shape*> it = shape.begin(); it!=shape.end(); ++it)
(*it)->Center();
}
void FindSquare(vector<Shape*> shape) {
double s=0;
// Нужно вычислить лишь для третьей фигуры ее площадь
s += shape[2].Square(); // Здесь происходит ошибка.
std::cout << s << std:endl;
}
int main() {
vector<Shape*> shape;
Line line1, line2;
Circle circle;
shape.push_back(&line1);
shape.push_back(&line2);
shape.push_back(&circle);
FindCenter(vector<Shape*> shape); // печатается координаты центра фигуры
FindSquare(vector<Shape*> shape); // найти общую площадь
return 0;
}
На ноуте (13") не хватает места на экране. Поэтому хочется рабочее пространство максимально увеличить.
Можно ли в среде Mate максимально увеличить окно, перекрыв панели или убирая декорацию окон? Если нет, то в чем это можно сделать? Что есть из сегодняшних ДЕ или мне придется ставить всякие WM и *boх'ы?
Есть старый телефон - HTC Incredible S, который подтормаживает от современного софта. Немного помогла прошивка андроида да версии 4.3, но телефон временами тупит и перестает реагировать на нажатия. Попытка удалить все лишнее с телефона тоже не спасает. Да и батарейки на день не хватает.
Поэтому настало время заменить телефон на новый. Требования такие:
Телефон нужен для звонков, почты, инета и яндекскарт.
Экран 4-5 дюймов, памяти > 16 гигов.
Хороший фотик желателен. Финансов не больше 25 тыр.
Батарейки должно хватать больше чем на день.
Какая ОС не так критично, главное нормально работала и была удобной. Главный критерий, чтоб не тормозило и долго прослужило.
Смотрел айфоны, сони, htc, самсунги, китайцев (xiaomi, meizu), даже нокию, но не смог подобрать.
На данный момент есть код на уровне идеи. Знаю что он неправильно работает. Подскажите как реализовать эту идею правильно.
Суть такая - есть несколько потомков от одного класса, у которых может в зависимости от параметра k содержаться массив разной длины с данными. Параметр k для класса постоянен, массив foo при заданном параметры тоже постоянен.
class A() {
int k;
int *foo = new int[k];
switch(k) {
case 1:
foo[0] = 1;
case 2:
foo[0] = 2;
foo[1] = 3;
}
}
class B: public A() {
k = 1;
}
class C: public A() {
k = 2;
}
class D: public A() {
k = 2;
}
void main() {
B b;
C c;
D d;
return 0;
}
Павел Дуров покинул должность руководителя социальной сети «ВКонтакте».
Поставлена окончательная точка в этом вопросе. Теперь официально еще одним «неподконтрольным» ресурсом стало меньше. Делаем ставки что дальше поглотят сторонники режима и когда запилят великий фаервол.
Подскажите как получить доступ к элементам класса B и C в цикле по вектору D?
class A {
int i;
void fun();
}
class B::A {
i = 1;
fun() {...};
...
}
class C::A {
i = 2;
fun() {...};
...
}
vector<A*> D;
D.push_back(&B);
D.push_back(&C);
for (...)
...
З.ы. Код написан схематично, т.к. писал по памяти и могут быть пропущены синтаксические ошибки.
Добрый день ЛОР. Больше года я не использовал Арч, поэтому немного отстал.
Хочу заново на него вернуться, что там изменилось?
Не могли бы по пунктам (схематично) напомнить процесс установки (до ДЕ).
В какой последовательности вы ставите alsa, laptop утилиты и др. Подробности не нужны, лишь нюансы.
Так и не нешел Lenovo в городе и вот сегодня приобрел нетбук Aspire One 756 с шинодовс 8 на борту. Железо понравилось.
Стоял и тупил в магазине с вендой 8 и не знал как ей пользоваться. Ну как так можно. Ведь испоганили десктоп к черту. Мне ведь работать в нем надо, а не тыкать пальцем по плиткам.
Решил поставить скайп, оказывается у них магазин появился и просто напрямую уже его не поставишь. Приходиться региться на сайте мелкософта. Ставил и чертыхался ):
Обновления ставятся по несколько часов, это нормально?
Кстати, никакие диски теперь в комплекте не идут. Если сломаешь ОС, то все.
Это у меня только так или у всех проблемы с восьмеркой?
Этот подход получился неудачным. Поэтому попробую заново сформулировать вопрос по-другому.
Есть 10-20 материалов, у которых есть свойства p1, p2, ... (в зависимости от материала набор этих свойств может отличаться). Это можно задать через struct mat{...}. Также у каждого материала есть вычисляемые функции, т.е. методы (у каждого они разные). Можно все это обернуть в class на основе виртуального класса.
Все эти материалы нужно будет передавать в процедуру. Т.к. количество материалов может быть разной, то необходимо их передавать либо в виде списков, массивов или еще как-то.
Проблема возникает когда я хочу передать массив структур в процедуру, т.к. класс является виртуальным.
Каким методом все это реализовать, чтобы получался код наглядным и простым? С помощью каких элементов с++ это лучше всего будет сделать. В основном интересует сам подход.
З.ы. Если это возможно, то в рамках стандартного с++98.
Хочется сделать одну шаблонную функцию (header.h), которая реализована различными способами в source1.cpp или source2.cpp. В зависимости от моего выбора, программа будет собираться с первым или со вторым. И все это потом вызывать в mainsource.cpp.