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

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

Восстановить пароль Регистрация
 
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
31.05.2012, 12:39     Функция не выводит значение строки #1
Доброго
Проблема в том, что функция 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 минуты
Получается, что вроде в конструктор передеаю значение, а оно не сохраняется
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 12:39     Функция не выводит значение строки
Посмотрите здесь:

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! C++
C++ Не правильно выводит значение (if, else)
C++ Функция, которая число с клавиатуры выводит в бинарной форме
C++ printf не выводит значение строки
C++ многомерные массивы и функция (найти среднеквадратичное значение положительных элементов каждой строки массива)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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. Тут что-то не так
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
31.05.2012, 13:26  [ТС]     Функция не выводит значение строки #3
Суть производного класса - обрезать строку, что бы не переполнила строку для хранения.
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
31.05.2012, 13:29     Функция не выводит значение строки #4
Тогда откатите все мои изменения, кроме того места, где напрямую вызывается код вместо конструктора.
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
31.05.2012, 13:48  [ТС]     Функция не выводит значение строки #5
Так то оно работает, я не могу понять почему через конструктор не работает

Добавлено через 38 секунд
Если строку сделать private, то без конструктора не получится
matepuhko
20 / 20 / 6
Регистрация: 05.06.2011
Сообщений: 119
31.05.2012, 14:13     Функция не выводит значение строки #6
StringU s; - вызываеш конструктор без параметра
s="TestingChanell"; - конструктор , разве?
Мб перегрузить =
rakota
35 / 35 / 1
Регистрация: 05.02.2012
Сообщений: 76
31.05.2012, 14:27     Функция не выводит значение строки #7
Цитата Сообщение от matepuhko Посмотреть сообщение
s="TestingChanell"; - конструктор , разве?
Мб перегрузить =
Там вызывается копирующий конструктор по умолчанию, он тут отлично работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2012, 18:25     Функция не выводит значение строки
Еще ссылки по теме:

Функция stod() выводит только 4 знака после запятой C++
C++ не выводит значение переменной
C++ Не выводит минимальное значение

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

Или воспользуйтесь поиском по форуму:
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
31.05.2012, 18:25  [ТС]     Функция не выводит значение строки #8
Конструктор String::String(q); не понятно куда девает значение

Добавлено через 3 часа 45 минут
Все же жду хоть какой то мысли, что в коде не так
Yandex
Объявления
31.05.2012, 18:25     Функция не выводит значение строки
Ответ Создать тему
Опции темы

Текущее время: 02:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru