
я люблю грин дей
21.01.2017
07:03:35
на чом пишешь

Il'ya
21.01.2017
07:05:25
#list_bots

я люблю грин дей
21.01.2017
07:05:57
а какой из них твой7

Google

Il'ya
21.01.2017
07:06:44
Удалил давно.


Nik
21.01.2017
08:32:00
Всем привет! Прохожу онлайн курс по плюсам, но вот на этой задаче затык, не могу понять, где я закосячил или может с тестами глюк какой:(
Вам дан класс Foo:
struct Foo {
void say() const { std::cout « "Foo says: " « msg « "\n"; }
protected:
Foo(const char msg) : msg(msg) { }
private:
const char msg;
};
Как видно, создатель класса не хотел чтобы его использовали и "спрятал" конструктор класса. Но вам очень нужен объект этого класса, чтобы передать его в функцию foo_says:
void foo_says(const Foo& foo) { foo.say(); }
В этом задании вам нужно реализовать функцию get_foo (сигнатура которой намерено не приводится в задании полностью, вам нужно подумать и вывести ее самостоятельно) так, чтобы следующий код компилировался и работал:
foo_says(get_foo(msg));
Где msg — произвольная C-style строка.
Требования к реализации: при выполнении задания вам разрешено вводить любые вспомогательные функции и классы. Запрещено изменять определение класса Foo или функции foo_says. Вводить или выводить что-либо не нужно. Реализовывать функцию main не нужно.
^ - Это задание.
вот ответ:
/* Этот код просто напоминание как выглядит класс Foo и функция foo_says.
Не нужно его расскоментировать и/или менять.
#include <iostream>
struct Foo {
void say() const { std::cout « "Foo says: " « msg « "\n"; }
protected:
Foo(const char msg) : msg(msg) { }
private:
const char msg;
};
void foo_says(const Foo &foo) { foo.say(); }
/
// Вам нужно определить функцию get_foo, как описано в задании,
// чтобы компилировался и работал как ожидается следующий код:
//
//foo_says(get_foo("Hello!"));
struct helpFoo : public Foo
{
helpFoo(const char const msg) : Foo(msg) {}
};
const Foo & get_foo(const char * msg)
{
const helpFoo fo(msg);
const Foo & f = fo;
return f;
}
Надеюсь, кто-нибудь подскажет... Вопрос уже прогуглил, даже нашел пару решений, но они идентичны и так же не работают.
Был бы очень благодарен за помощь )


Кубик
21.01.2017
08:53:23
Сложна
Мы не програмисты
Сорь

Karina
21.01.2017
09:09:36
в Питере сегодня такое солнце
даж удивительно
почему лапти?

Il'ya
21.01.2017
09:22:31
Лапти прав.

Karina
21.01.2017
09:23:28
да не
я спрашиваю его

Google

Karina
21.01.2017
09:23:35
почему он лапти

fgfgj
21.01.2017
09:23:56
Удаляет вечно?

Karina
21.01.2017
09:24:36
а Слава сегодня уже был?

fgfgj
21.01.2017
09:24:49


Славик
21.01.2017
09:25:06
Всем привет! Прохожу онлайн курс по плюсам, но вот на этой задаче затык, не могу понять, где я закосячил или может с тестами глюк какой:(
Вам дан класс Foo:
struct Foo {
void say() const { std::cout « "Foo says: " « msg « "\n"; }
protected:
Foo(const char msg) : msg(msg) { }
private:
const char msg;
};
Как видно, создатель класса не хотел чтобы его использовали и "спрятал" конструктор класса. Но вам очень нужен объект этого класса, чтобы передать его в функцию foo_says:
void foo_says(const Foo& foo) { foo.say(); }
В этом задании вам нужно реализовать функцию get_foo (сигнатура которой намерено не приводится в задании полностью, вам нужно подумать и вывести ее самостоятельно) так, чтобы следующий код компилировался и работал:
foo_says(get_foo(msg));
Где msg — произвольная C-style строка.
Требования к реализации: при выполнении задания вам разрешено вводить любые вспомогательные функции и классы. Запрещено изменять определение класса Foo или функции foo_says. Вводить или выводить что-либо не нужно. Реализовывать функцию main не нужно.
^ - Это задание.
вот ответ:
/* Этот код просто напоминание как выглядит класс Foo и функция foo_says.
Не нужно его расскоментировать и/или менять.
#include <iostream>
struct Foo {
void say() const { std::cout « "Foo says: " « msg « "\n"; }
protected:
Foo(const char msg) : msg(msg) { }
private:
const char msg;
};
void foo_says(const Foo &foo) { foo.say(); }
/
// Вам нужно определить функцию get_foo, как описано в задании,
// чтобы компилировался и работал как ожидается следующий код:
//
//foo_says(get_foo("Hello!"));
struct helpFoo : public Foo
{
helpFoo(const char const msg) : Foo(msg) {}
};
const Foo & get_foo(const char * msg)
{
const helpFoo fo(msg);
const Foo & f = fo;
return f;
}
Надеюсь, кто-нибудь подскажет... Вопрос уже прогуглил, даже нашел пару решений, но они идентичны и так же не работают.
а компилятор что пишет? что не так вообще в поведении программы?


Karina
21.01.2017
09:25:08
ой, вот и Слава
Славик, как дела?

Славик
21.01.2017
09:25:28
нормально

Karina
21.01.2017
09:25:53
Как всегда максимально информативно :)

Славик
21.01.2017
09:26:02
http://red-health.ru/pushup-to-balance-complex/
заценил эту тему

Nik
21.01.2017
09:26:02

Славик
21.01.2017
09:26:04
годно
ты отправлял решение сразу куда-то в систему?
у себя компилил?

Nik
21.01.2017
09:26:31

Славик
21.01.2017
09:28:21
решение ок, ты получается экстендишь класс Foo и делаешь у нового класса публичный конструктор, вызывая в нем конструктор родителя
годно

Google

ॐ
21.01.2017
09:28:41

Славик
21.01.2017
09:30:49
helpFoo(const char const msg) : Foo(msg) {}
попадосик - у меня трясется правая рука очень жестко
я не могу мышкой никуда навести

Nik
21.01.2017
09:32:02

Славик
21.01.2017
09:32:19
так-то да

Nik
21.01.2017
09:32:51

Славик
21.01.2017
09:33:31
меня смутили фигурные скобки
и я сейчас с трясущейся рукой пытаюсь загуглить, как эстендятся классы в си++

Nik
21.01.2017
09:33:57
Я там уже все варианты константности пробовал ) такое ощущение, что они чутка испортили тесты и там все сломалось

Славик
21.01.2017
09:34:00
я очень редко пишу на си
константы наоборот тебе могут только помешать

Славик
21.01.2017
09:34:32
они нужны скорее для экономии памяти вроде
ты точно локально всё запустил и все работает?

Nik
21.01.2017
09:35:12
Да,пробовал в qt creator
Без подключения каких либо библиотек

Славик
21.01.2017
09:35:29
а в системе какой компилятор?

Admin
ERROR: S client not available

Nik
21.01.2017
09:35:47
Mingw, если не ошибаюсь

Славик
21.01.2017
09:36:26
ну я бы попробовал через g++ скомпилить

Google

Славик
21.01.2017
09:36:52
короче, выглядит годно, но

Il'ya
21.01.2017
09:36:57
g++ amd64 4:4.9.2-2

Славик
21.01.2017
09:36:57
я очень редко пишу на си

Il'ya
21.01.2017
09:37:01
Обновился таки.

Nik
21.01.2017
09:37:37
Спасибо!)

Славик
21.01.2017
09:38:58
а что за система? ты сам учишься или тебе для универа/школы?
попробуй как вариант прямо сказать, что helpFoo public
public:
helpFoo(const char*msg) : Foo(msg) {}

Nik
21.01.2017
10:00:06

CATASTROPHE
21.01.2017
10:01:04
Олег, это Карина у тебя на авке?
О_о
о_О
О_о

Славик
21.01.2017
10:01:35
напиши им в поддержку
потом нам расскажешь

fgfgj
21.01.2017
10:01:42
Профиль глянь

Nik
21.01.2017
10:01:52
Ну только это и осталось :))

CATASTROPHE
21.01.2017
10:02:11
зачем?

Славик
21.01.2017
10:02:58
https://www.codingame.com/start

Google

Славик
21.01.2017
10:03:12
https://www.codewars.com/
но это, наверное, когда пройдешь базовый курс
может быть увлекательнее из-за соревновательного момента

Nik
21.01.2017
10:10:37