Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
#1

НЕ создаётся подкласс класса string - C++

18.10.2010, 18:07. Просмотров 1086. Ответов 7
Метки нет (Все метки)

Почему, друзья?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <string>
using namespace std;
int main () {
 string stroka ("stroka");
 
 class podklass: publick string {
 };
 
 
 return 0;
}
Ошибка такая:
C++
1
1>.\ra.cpp(7) : error C2504: publick: не определен базовый класс
Как не определён? Всё определено, класс string определён в <string>;
C++
1
 string stroka ("stroka");
Нареканий не вызывает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2010, 18:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос НЕ создаётся подкласс класса string (C++):

Что лучше: расширить интерфейс класса или сделать публичным подкласс? - C++
Вопрос такой. Вот у меня есть устройство (class device ), у него есть регистры (class register) . Легче всего, по - моему, создать класс...

Не создаётся объект string на ровном месте! Почему? - C++
Ребята, чё-то я не пойму: #include &lt;string&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; using namespace std; int main () { char...

Не создаётся конструктор класса - C++
Доброго времени суток. Имеется класс: class Punct_stream { string white; istringstream buffer; istream source; public:

Не создаётся объект класса - C++
---------------------------------------Address.h-------------------------------------------------- #pragma once class Address { ...

Как убрать подкласс в программке - C++
Уважаемые форумчане нужно сначала вот из этой программке убрать подкласс. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; ...

Как реализовать подкласс в cpp файле? - C++
Здравствуйте, есть 3 header. #ifndef WORKERS_H_INCLUDED #define WORKERS_H_INCLUDED #include &lt;string&gt; class Workers...

7
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
18.10.2010, 18:09 #2
Что за ключевое слово "publick"? "public" же!
0
Aye Aye
369 / 283 / 36
Регистрация: 17.12.2009
Сообщений: 567
18.10.2010, 18:11 #3
нельзя определять классы в локальных областях, только в глобальной. И функции тоже только в глобальной области определить или объявить можно. Иначе создается недоразумение: как поступить с определением класса при выходе из локальной области? - "разоъбявить"?

только что проверил... черт побери, можно!!!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main()
{
    class A{
    public:
        int i;
        A(int x):i(x){}
        int get(){return i;}
    };
    A a(9);
    cout  << a.get();
    return 0;
}
с ума сойти... никогда не перестанет меня удивлять компилятор,
а вот функции нельзя, да.
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
18.10.2010, 18:13  [ТС] #4
Прошу прощения
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
18.10.2010, 18:15 #5
Aye Aye, Можно. Но оно того не стоит вцелом. Если еще где-то класс нужен.
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
18.10.2010, 18:18  [ТС] #6
[QUOT]Иначе создается недоразумение: как поступить с определением класса при выходе из локальной области? - "разоъбявить"?[/QUOTE]
Так это, наверное, просто. Все локальные переменные (int и почее) создаются в стеке. Ну, а коль скоро объект класса всего лишь участок памяти, то и ему (объекту) отводится участок в стеке. По выходе из функции, эта часть стека становится недоступной и всё.
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
18.10.2010, 18:24 #7
Цитата Сообщение от Aye Aye Посмотреть сообщение
нельзя определять классы в локальных областях, только в глобальной
А у меня вот получилось. Что я делаю не так?
Цитата Сообщение от Lavroff Посмотреть сообщение
Aye Aye, Можно. Но оно того не стоит вцелом. Если еще где-то класс нужен.
Ну, к примеру, для того, чтобы создавать типы данных, имеющие определенную область видимости (правда зачем?):
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
34
35
#include <iostream>
 
void foo()
{
    class substring
    {
    public:
        substring ()
        {
            std::cout << "In foo" << std::endl;
        }
    };
    substring bar;
}
 
int main()
{
    class substring
    {
    public:
        substring ()
        {
            std::cout << "In main" << std::endl;
        }
    };
    substring bar;
    foo();
    return 0;
}
 
/*
 * Программа выведет:
 * In main
 * In foo
 */
Никаких ошибок повторного объявления не выдает...
0
Aye Aye
369 / 283 / 36
Регистрация: 17.12.2009
Сообщений: 567
18.10.2010, 18:27 #8
kravam, ну насчет объекта правильно, только я имел в виду класс и ошибся. Дело в том что классы - это абстракция для программиста, компилятор превращает методы класса в глобальные функции с одним лишним аргументом - указателем на объект, а экземпляры класса - обычные участки памяти. Шерстя текст программы компилятор создает что то вроде таблицы классов, где указано какие функции и какие объекты как могут взаимодействовать. Я думал что раз это абстракция то определение класса должно удалиться из таблицы классов - что сомнительно с моей точки зрения хотя я сам не знаю почему. но я был не прав ))
0
18.10.2010, 18:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2010, 18:27
Привет! Вот еще темы с ответами:

Наследование класса String - C++
Начал осваивать ООП С++ и решил в виде практики добавить в класс #include &lt;string&gt; добавить свою функцию переворачивания строки, точнее...

Реализация класса String - C++
Доброго времени суток! Пишу свой класс String (учусь). И возник вопрос по реализации. Имеется определение класса: class String ...

Не видит класса string - C++
Вопрос чисто технический: в VisualStudio 2010 создал тестовый проект. В нём создал файл Class1.h, в нём текст: #pragma once ...

Использование класса String - C++
//Èñïîëüçîâàíèå êëàññà string. #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; class String { public: ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.