42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
1

Функция, возвращающая умный указатель

06.03.2015, 02:00. Показов 2067. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста создать функцию, возвращающую умный указатель. Мой вариант не рабочий:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class InterfaceVideo{
    public:
        virtual CVideo* Creating()=0;
        virtual CVideo* Deleting()=0;
        virtual void Coping()=0;
         virtual shared_ptr<CVideo> Ptrs(int p)=0;
        InterfaceVideo();
        ~InterfaceVideo();
};
 
class CVideo: public InterfaceVideo {
    public:
        CVideo();
        CVideo(int);
        CVideo(const CVideo& object);
        ~CVideo();
        CVideo* Creating();
        CVideo* Deleting();
        void Coping();
        CCartoon CreateCartoon();
        shared_ptr<CVideo> Ptrs(int p) {
            shared_ptr<CVideo> ptrs(new CVideo()) ;
            return ptrs;
        }
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2015, 02:00
Ответы с готовыми решениями:

Функция, возвращающая указатель
Добрый вечер. Требуется написать программу, содержащую структуру вида type1 *имя(type2); т.е....

Функция, возвращающая указатель
Нужно написать функцию, входящие параметры которой являются указателем на структуру. Заполнить в...

Функция, возвращающая указатель
Здравствуйте. Пускай есть класс Some_type и массив такого класса. Можно ли функцией Some_type*...

Функция возвращающая указатель на int
Не могу понять ошибки. // prata 7 pt to function.cpp : Defines the entry point for the console...

7
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
06.03.2015, 04:00 2
Поставить class CVideo; (именно с точкой с запятой) перед class InterfaceVideo. Если не помогло, писать что именно не работает.
0
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
06.03.2015, 04:11  [ТС] 3
это поставлено изначально...
выводит:
Ошибка 3 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
Ошибка 4 error C2238: непредвиденные лексемы перед ";"
Ошибка 2 error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
для строки 6(я там убрал virtual и =0 т.к. вообще виртуальную функцию возвращающую shared_ptr не может создать принципиально)

и для строки 21:
Ошибка 6 error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
Ошибка 7 error C2334: непредвиденные лексемы перед "{"; пропуск вероятного тела функции
Ошибка 5 error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
06.03.2015, 04:14 4
C++
1
2
#include<memory>
using namespace std;
Есть?
0
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
06.03.2015, 04:18  [ТС] 5
Разумеется... походу компилятор думает, что объявляется не функция, а просто поле типа shared_ptr... вот только не знаю как от этого избавиться
0
41 / 41 / 26
Регистрация: 24.02.2015
Сообщений: 151
06.03.2015, 04:22 6
На всякий случай, такой код компилятор компилит ?
C++
1
2
3
4
5
#include <memory>
int main(){
    std::shared_ptr<int> i(new int(3));
    return 0;
}
1
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
06.03.2015, 04:23 7
Цитата Сообщение от tapochka Посмотреть сообщение
Разумеется... походу компилятор думает, что объявляется не функция, а просто поле типа shared_ptr... вот только не знаю как от этого избавиться
Тогда я бы грешил именно на компилятор. Потому как такой вариант у меня (g++ 4.9.1) компилируется нормально:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<memory>
using namespace std;
class CVideo;
class CCartoon;
class InterfaceVideo{
    public:
        virtual CVideo* Creating()=0;
        virtual CVideo* Deleting()=0;
        virtual void Coping()=0;
         virtual shared_ptr<CVideo> Ptrs(int p)=0;
        InterfaceVideo();
        ~InterfaceVideo();
};
 
class CVideo: public InterfaceVideo {
    public:
        CVideo();
        CVideo(int);
        CVideo(const CVideo& object);
        ~CVideo();
        CVideo* Creating();
        CVideo* Deleting();
        void Coping();
        CCartoon CreateCartoon();
        shared_ptr<CVideo> Ptrs(int p) {
            shared_ptr<CVideo> ptrs(new CVideo()) ;
            return ptrs;
        }
};
int main()
{
    return 0;
}
1
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
06.03.2015, 04:25  [ТС] 8
компилится...
видимо придется шаблон класса создать

vs использую

боже... надо было <memory> в головной добавить, а не в cpp-шный, всем спасибо
0
06.03.2015, 04:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2015, 04:25
Помогаю со студенческими работами здесь

Функция, возвращающая указатель на структуру
Помогите пожалуйста понять в чем ошибка! Функция create должна возвращать указатель на структуру...

Функция, возвращающая указатель на функцию
Здравствуйте, у меня есть универсальная ф-ия, которая возвращает указатель на одну из трёх ф-ий....

Функция, возвращающая указатель на функцию
Всем привет, Мне нужно создать функцию, которая будет возвращает указатель на функцию. Я создам...

Функция, возвращающая указатель на структуру
Ребят помогите пожалуйста,как создать функцию возвращающую указатель на структуру,в общем задание...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru