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

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

Войти
Регистрация
Восстановить пароль
 
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
#1

Функция не выводит значение строки - C++

31.05.2012, 12:39. Просмотров 334. Ответов 7
Метки нет (Все метки)

Доброго
Проблема в том, что функция print() не выводит значение.
Ломаю голову, что может быть не так
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
36
37
#include <iostream>
#include <cstring>
using namespace std;
class String
{
protected:
    char str[10];
public:
    String(){str[0]='\0';cout << "NULL\n";}
    String(char s[]){strcpy_s(str,s);cout << "Not NULL\n";}
    void print()const{cout << "OK" << strlen(str) << str;}
};
class StringU:public String
{
public:
    StringU():String(){};
    StringU(char s[])
    {
        char q[10];
        if(strlen(s)>=9)
        {
            for(int i=0;i<9;i++)
                q[i]=s[i];
            q[9]='\0';
            String::String(q);
        }
        else
            String::String(s);
    }
};
int main()
{
    StringU s;
    s="TestingChanell";                   
    s.print();
    return EXIT_SUCCESS;
}
Добавлено через 44 минуты
Получается, что вроде в конструктор передеаю значение, а оно не сохраняется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 12:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция не выводит значение строки (C++):

Функция rand в цикле выводит одно и то же значение - C++
Всем привет! В общем, прилагаю условие задачи и мой написанный код :) Проблема, как я считаю, незначительная, однако я никак не могу понять...

printf не выводит значение строки - C++
заместо значения выводит (null) #include &lt;stdio.h&gt; #include &lt;string&gt; #include &lt;iostream&gt; int main() { std::string...

Функция которая заменяет значение в строки одного слова на другое - C++
Напишите функцию, имеющую следующий прототип: int replace (char * str, char c_first, char c_second) . Эта функция должна заменять каждое...

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! - C++
Друзья! Почему так? #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; //Вот главный класс class A{ ...

Функция: найти среднеквадратичное значение положительных элементов каждой строки матрицы - C++
Дан массив а&lt;8,5&gt; с использованием функции найти среднеквадратичное значение положительных элементов каждой строки массива Добавлено...

Функция не выводит результат на консоль (таблица истинности) - C++
Нужно построить таблицу истинности для формулы A _ (!B _ !C), где _ - это запрос на введение команды у пользователя (&amp;,+,&gt;,=). Отрицание B,...

7
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
31.05.2012, 13:06 #2
Проблема в том, что в некоторых реализациях и компиляторах невозможно напрямую вызвать конструктор родительского класса.

Не по теме:

У меня, например, ваш код вообще не компилируется


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
class String
{
protected:
    char str[15]; // нужно увеличить
public:
    String(){str[0]='\0';cout << "NULL\n";}
    String(char s[]){strcpy_s(str,s);cout << "Not NULL\n";}
    void print()const{cout << "OK" << strlen(str) << str;}
};
class StringU:public String
{
public:
    StringU():String(){};
    StringU(char s[])
    {
        char q[10];
        if(strlen(s)>=9)
        {
            for(int i=0;i<9;i++)
                q[i]=s[i];
            q[9]='\0';
            strcpy_s(str,q); //прямой вызов
            cout << "Not NULL\n";
        }
        else
            strcpy_s(str,s);
            cout << "Not NULL\n";
    }
};
int main()
{
    StringU s;
    s="TestingChanell"; //тут 15 символов
    s.print();
   //...
Кстати сказать, у меня программа выводила NULL,NULL,NULL,OK 0. Тут что-то не так
0
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
31.05.2012, 13:26  [ТС] #3
Суть производного класса - обрезать строку, что бы не переполнила строку для хранения.
0
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
31.05.2012, 13:29 #4
Тогда откатите все мои изменения, кроме того места, где напрямую вызывается код вместо конструктора.
0
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
31.05.2012, 13:48  [ТС] #5
Так то оно работает, я не могу понять почему через конструктор не работает

Добавлено через 38 секунд
Если строку сделать private, то без конструктора не получится
0
matepuhko
20 / 20 / 6
Регистрация: 05.06.2011
Сообщений: 119
31.05.2012, 14:13 #6
StringU s; - вызываеш конструктор без параметра
s="TestingChanell"; - конструктор , разве?
Мб перегрузить =
0
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
31.05.2012, 14:27 #7
Цитата Сообщение от matepuhko Посмотреть сообщение
s="TestingChanell"; - конструктор , разве?
Мб перегрузить =
Там вызывается копирующий конструктор по умолчанию, он тут отлично работает.
0
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
31.05.2012, 18:25  [ТС] #8
Конструктор String::String(q); не понятно куда девает значение

Добавлено через 3 часа 45 минут
Все же жду хоть какой то мысли, что в коде не так
0
31.05.2012, 18:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2012, 18:25
Привет! Вот еще темы с ответами:

Функция по неизвестным причинам выводит текст дважды - C++
Привет, у меня функция после того, как пользователь ввел команду и уточнил номер, скажем, уровней, текст &quot;Enter a command or 'exit' to quit...

Вывести на экран значение t при котором функция x(t) принимает максимальное значение - C++
Объясните, как решить с помощью массива. Только начал изучать C++. Знаю, как вывести максимальный из массива. Но как сделать чтобы в этот...

Функция, которая число с клавиатуры выводит в бинарной форме - C++
Kak mozno napisat funkciju ili programu, kotoraja zadanoje cislo na klaviature vivodit na ekran v binernoj forme. Spasibo

Функция stod() выводит только 4 знака после запятой - C++
Как сделать так, чтобы функция stod() при преобразовании строки string в число double не ограничивала количество знаков после запятой...


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

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

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