Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
4 / 4 / 1
Регистрация: 17.12.2017
Сообщений: 120

Аналог из Java в С++

03.05.2019, 13:07. Показов 4734. Ответов 50
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В наличии два классаog и его наследник Shepherd. Метод guard() принадлежит Shepherd , с Dog он не вызывается, но при данном вызове ((Shepheerd)dog).guard(); работает в Java. Как можно в с++ реализовать такое превращение типа
Java
1
2
3
Dog dog = new Shepherd(  контруктор );
dog.bark();
((Shepheerd)dog).guard();
Добавлено через 11 минут
Тоесть мне нужно создать объект класса Dog, но затем вызвать метод для этого объекта ,но из другого класса
C++
1
2
3
setlocale(LC_ALL, "RUS");
    Dog dog1 = Shepherd("Икита", 12, 12, 12);
    dog1.exam3();
то ему exam3() не известен.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2019, 13:07
Ответы с готовыми решениями:

Аналог MoveNext на Java. Перевод программы с C# на Java
Написала программу на C#. Перевожу ее на Java. Проблема возникла в переводе нижеследующего куска программы. В связи с крайне слабым знанием...

Аналог Scanner из Java
Подскажите пожалуйста аналог scanner из Java. В гугле нашел метод Split, но мне он не очень подходит. У меня есть файл и я заранее знаю,...

Аналог дефине из С в Java
например: #define LROT13(x) (((x) << 14) | ((x) >> 18 )) ...... int hash = LROT13 (hash + ((hash << 8) ^ (hash >> 12))) - ...

50
4 / 4 / 1
Регистрация: 17.12.2017
Сообщений: 120
03.05.2019, 23:29  [ТС]
Студворк — интернет-сервис помощи студентам
а ArrayList коллекция в с++ тоже отсутствует?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.05.2019, 00:17
Вместо коллекции тут можно использовать std::vector указателей на базовый класс. Для автоматизации освобождения памяти - умных указателей

Добавлено через 1 минуту
Если полиморфность не требуется, то просто std::vector для экземпляров требуемого класса.
1
4 / 4 / 1
Регистрация: 17.12.2017
Сообщений: 120
04.05.2019, 18:35  [ТС]
C++
1
2
3
4
5
6
vector<Student> stud = vector<Student>();
    stud.push_back(FirstYear("Sirko", 5, 12, 105));
    stud.push_back(FirstYear("Babka", 5, 12, 105));
    for (int i = 0; i < 2; i++){
        stud[i].numb();
    }
Сделал на примере студентов.Все работает ,спасибо

Добавлено через 5 часов 47 минут
Еще вопрос,есть данные с конструктора ,их нужно сравнить с помощью equal . Как можно реализовать?
C++
1
2
FirstYear stud2 = FirstYear("Sirko", 5, 15, 205);
    FirstYear stud3 = FirstYear("Petro", 4, 15, 205);
Пробовал так,но дает ошибку : Ошибка 1 error C2678: бинарный "==": не найден оператор, принимающий левый операнд типа "Student" (или приемлемое преобразование отсутствует)
C++
1
2
3
4
5
6
vector<Student> stud1 = vector<Student>();
    stud1.push_back(FirstYear("Sirko", 5, 12, 105));
    vector<Student> stud2 = vector<Student>();
    stud2.push_back(FirstYear("Babka", 5, 12, 105));
    bool res = equal(stud1.begin(), stud1.end(), stud2.begin());
    cout << res << endl;
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
04.05.2019, 18:56
DieSeele, в продолжении разоворов с первой страницы. Нельзя пихать производного класса объекты (FirstYear)
в вектор от базового класса (vector<Student>)
Ну т.е. скомпилируется, конечно, но бессмысленно.

Цитата Сообщение от DieSeele Посмотреть сообщение
Ошибка 1 error C2678: бинарный "==": не найден оператор, принимающий левый операнд типа "Student" (или приемлемое преобразование отсутствует)
добавить функцию
C++
1
2
3
bool operator==(Student& left, Student& right){
  return left.name==right.name && left.age==right.age && и.т.д.
}
1
4 / 4 / 1
Регистрация: 17.12.2017
Сообщений: 120
04.05.2019, 19:28  [ТС]
Kuzia domovenok, добавил только теперь пишет ,что идентификатор res не определен. Добавил перед bool res
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.05.2019, 19:59
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
добавить функцию
bool operator==(Student& left, Student& right){
почему отсутствует const?
почему отсутствует noexcept?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
04.05.2019, 20:06
hoggy, а зачем, если и так работает??? Я сомневался, стоит ли вообще со ссылками выпендриваться, проще было бы написать
C++
1
bool operator==(Student left, Student right){
проще, всё упрощаем по максимуму, словно вообще С++ вчера увидели! Минимум синтаксиса С++
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.05.2019, 20:16
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а зачем, если и так работает???
действительно...
зачем делать грамотно, если оно и через жопу тоже как то работает.

давайте лучше втюхаем новичку говнокод.
пусть он тоже думает, что такой код - это нормально.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
проще, всё упрощаем по максимуму, словно вообще С++ вчера увидели! Минимум синтаксиса С++
это - не упрощение.
это - распиздяйство.
1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
04.05.2019, 20:31
Цитата Сообщение от hoggy Посмотреть сообщение
давайте лучше втюхаем новичку говнокод.
пусть он тоже думает, что такой код - это нормально.
я по опыту знаю, что втюхивать код кому угодно, хоть самому себе, до того как в нём остаётся хоть частичка незнакомого синтаксиса, хоть один незнакомый идентификатор - бесполезно.

Какой смысл "правильно" на незнакомом языке тупо копируя с форумов "правильные советы"? Я так же китайский язык могу "изучить", перерисовывая в тетрадь закорючки с упаковок рандомных товаров.
Чувак плавает в понятии классов С++ как таковых, а ты ему пытаешься впарить нюансы константности, которые у него может быть когда-нибудь всплывут. И новые ключевые слова до того как он слова class и operator освоил
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.05.2019, 20:48
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Какой смысл "правильно" на незнакомом языке тупо копируя с форумов "правильные советы"?
смысл "правильности" заключается в том,
что бы с самого начала учиться делать правильно.
для этого нужно понимать: почему это правильно.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
увак плавает в понятии классов С++ как таковых
нет, не плавает.
он знает что такое классы.
вот только знает он это по языку java.

и поэтому, у него сейчас формируются ассоциативные связи по аналогии с языком java.

с педагогической точки зрения, учить язык Х
по известным аналогиями языка Y - очень эффективно.

однако, существует ловушка,
которую очень хорошо в своей книге (Севершеный код) описал Макконелл.

не помню дословно.
нужно было обучить программистов COBOL языку с++.
ну так вот, в итоге они начали писать на с++ так,
словно это - привычный им COBOL.
вместо того, что бы использовать всю мощь и выразительность нового для них с++.

что бы такой фигни не происходило,
нужно не просто копировать как попугай,
необходимо понимание сути новых концепций.

в данном случае, чуваку нужно понимание:
что значит передача данных по значению/ссылке/указателю (этого нет в java)
и какие бывают виды константности для всех этих трех способов передачи данных.
и зачем эта константность нужна.

вот такое говно:
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
bool operator==(Student& left, Student& right)
ему точно не нужно.

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а ты ему пытаешься впарить нюансы константности, которые у него может быть когда-нибудь всплывут.
впариваешь тут ты - свой говнокод.

я лишь акцентирую внимание: не нужно делать через жопу, и думать что это нормально.
нужно понимать, как делать правильно, и почему оно правильно.

если, конечно, хочется быть специалистом, а не очередным говнокодером,
который говнокодит по принципу:
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
и так работает
до поры, до времени, ога.
1
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
04.05.2019, 20:56
hoggy, если он учится, может на него не надо наваливать сразу столько всего. Когда учился я (и до сих пор учусь), я и в помине не знал о таких вещах, как const после прототипа функции и noexpect. Однако с появлением практики и началом хождения по форумам, я узнал намного больше, чем писал Шилдт. Пусть парень(или девушка) учит все сам, по мере необходимости. Говнокодить - неотъемлемая часть в практике программирования. Нет такого программиста, который сразу начал писать идеально.
1
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.05.2019, 21:17
Цитата Сообщение от Pashka Durov Посмотреть сообщение
Говнокодить - неотъемлемая часть в практике программирования. Нет такого программиста, который сразу начал писать идеально.
Вот только если есть возможность сделать меньше ошибок - нужно пользоваться этой возможностью. Прислушиваться к рекомендации более опытных - это оно и есть.
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
04.05.2019, 21:20
Цитата Сообщение от S_el Посмотреть сообщение
нужно пользоваться этой возможностью
Ок, он пишет правильно, но знает ли он, что произойдет, если не следовать правилам? Не думаю. Пока сам на грабли не наступит - не поймет, что здесь плохого
1
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
04.05.2019, 21:20
Цитата Сообщение от DieSeele Посмотреть сообщение
Kuzia domovenok, добавил только теперь пишет ,что идентификатор res не определен.
Потому что для std::equal нужно
C++
1
#include <algorithm>
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
04.05.2019, 21:28
Цитата Сообщение от Pashka Durov Посмотреть сообщение
Ок, он пишет правильно, но знает ли он, что произойдет, если не следовать правилам? Не думаю. Пока сам на грабли не наступит - не поймет, что здесь плохого
А зачем это знание если ты уже знаешь как правильно? Ну разве что другим объяснить, но это не так часто и нужно.
Позже, если будет необходимость или интерес - копнешь глубже и узнаешь возможные последствия.
Одно дело - говнокодить самому, а другое - тупо копировать говнокод другого человека.

К тому-же любознательный человек будет играться с кодом, словит что-то непонятное или не словит и задаст уже новый конкретный вопрос.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.05.2019, 21:36
Цитата Сообщение от Pashka Durov Посмотреть сообщение
если он учится, может на него не надо наваливать сразу столько всего.
не нужно вбрасывать говнокод в первую очередь.

вот как делают всякие Шилды:
дозируют материал так, что бы не сваливать на читателя все сразу.
но при этом, они же не прививают всякое г. со словами: "итак сойдёт!"
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
04.05.2019, 21:37
Цитата Сообщение от S_el Посмотреть сообщение
А зачем это знание если ты уже знаешь как правильно?
Раньше люди точно знали, что земля плоская, и никто с этим не спорил, однако это оказалось не так.

Цитата Сообщение от S_el Посмотреть сообщение
Ну разве что другим объяснить, но это не так часто и нужно.
Мы живем не вечно, и когда-нибудь этого человека спросят: "А зачем так делать?", а он им ответит: "Не знаю, меня так научили". В итоге мы получим специалистов, которые не думает и творят, а вставляют все по шаблону "как научили"
1
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
04.05.2019, 21:44
Цитата Сообщение от hoggy Посмотреть сообщение
но при этом, они же не прививают всякое г. со словами: "итак сойдёт!"
Страница из его книги, где используется точно такая же функция. И после этого ты говоришь, что он не прививает всякое г.?
Миниатюры
Аналог из Java в С++  
1
4 / 4 / 1
Регистрация: 17.12.2017
Сообщений: 120
04.05.2019, 22:04  [ТС]
1)Всем спасибо за активную дискуссию. 2)Да,я пишу(стараюсь) ,но выходит говнокод,хотя разницы между норм и говно-кодами пока не знаю. 3)Учу сам,заочка,оттуда лабы беру. А по сути:
C++
1
#include <algorithm>
- есть давно . 2)Да,я нуб пока что.Что такое "класс" понял,имхо.Но когда пишут,добавь туда-то строку- то туплю.Поставил так,но видать неверно.
C++
1
2
3
4
5
6
7
8
9
vector<Student> stud1 = vector<Student>();
    stud1.push_back(FirstYear("Sirko", 5, 12, 105));
    vector<Student> stud2 = vector<Student>();
    stud2.push_back(FirstYear("Babka", 5, 12, 105));
    bool operator==(Student& left, Student& right){
        return left.name == right.name && left.mark == right.mark;
    }
    bool res = equal(stud1.begin(), stud1.end(), stud2.begin());
    cout << res << endl;
Тут нужен именно equal ,причем в лабе его рекомендуют юзать с hashCode
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.05.2019, 22:25
Цитата Сообщение от Pashka Durov Посмотреть сообщение
Страница из его книги, где используется точно такая же функция. И после этого ты говоришь, что он не прививает всякое г.?
открой для себя когда лучше передавать по ссылке,
а когда - по значению.

что качается нашего случая:
чувак выше передал по не_константной ссылке.
хотя значение аргумента использовалось только для чтения.

нарушение "граммар-const" - это уже из другой оперы.
ортогонально теме: "когда по ссылке, когда по значению"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2019, 22:25

Аналог указателей из C++ в Java
Изучаю многим небезызвестную &quot;Паттерны проектирования&quot;. Там, как мы все знаем все примеры на C++. Есть там такой код: Mapsite* GetSide...

Аналог java RuleBasedCollator
Доброго дня. Есть java код public String Normalize(String name) { RuleBasedCollator collator =...

Аналог rdlc в java
Есть ли какие сборки (еще что-то) для создания отчетов типа rdlc от Microsoft? Крайне желательно free java древняя, 6

аналог odd на java
Существует ли в java функция на подобие odd в паскале?

Аналог вектора (из C++) в Java
Добрый вечер. Многие знают, что в C++ есть удобная структура данных - vector. В Java есть похожие структуры данных, типа ArrayList,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Администрация Хабра удаляет новые алгоритмы, которые не западно ориентированной философии кода, без уведомлений и объяснений.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru