0 / 0 / 0
Регистрация: 31.01.2016
Сообщений: 5

С++, delete в деструкторе класса не видит переменные, создаваемые new в конструкторе класса

03.02.2016, 21:47. Показов 1995. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "stdafx.h"
#include "iostream"
#include "math.h"
using namespace std;
 
class fun
{
    double t = 0, x = 0, y = 0, z = 0;
    const double pi = 3.1415926535;
public:
    void set(double, double, double);
    void run();
    void print();
    fun();
    ~fun();
};
 
void fun::set(double X, double Y, double Z)
{
    x = X; y = Y; z = Z;
}
void fun::print()
{
    cout << endl << "t = " << t;
}
void fun::run()
{
    t = (2 * cos(x - pi / 6)) / (0.5 + sin(y) * sin(y))*(1 + (z*z / (3 - (z*z / 5))));
}
fun::fun()
{
    double *t1 = new double;
    double *x1 = new double;
    double *y1 = new double;
    double *z1 = new double;
}
fun::~fun()
{
    delete t1;
    delete x1;
    delete y1;
    delete z1;
}
 
int main()
{
    fun A; A.set(14.26, -1.22, 3.5*0.01); A.run(); A.print();
    fun *B = new fun; B->set(14.26, -1.22, 3.5*0.01); B->run(); B->print();
    cout << endl; system("pause");
    return 0;
}
t1, x1, y1, z1 не определены. Ну и где я сейчас схалтурил?
Если объявить их в самом классе, не будет ли это нарушением этикета. Программка - часть из того, что надо будет сдать. Не хочется, чтобы препод придрался, мол, "что за дичь, давай, по-другому выкручивайся".
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.02.2016, 21:47
Ответы с готовыми решениями:

Метод абстрактного класса не видит переменные дочернего класса
есть abstract class A{ protected static $dir; public static function f(){} } и два класса B,C наследника { protected static...

Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса)
Всем доброго времени суток! Пытаюсь разобраться как работает приведенный мной код. Конкретно, пытаюсь разобраться что происходит в...

Ошибка при работе с объектом класса в конструкторе другого класса
Имеется данный код: https://github.com/ubelian/glgame/tree/master/glgame В файле Food.cpp в конструкторе класса Food::Food() на 19...

5
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5240 / 2114 / 416
Регистрация: 06.01.2013
Сообщений: 4,845
03.02.2016, 21:50
Лучший ответ Сообщение было отмечено Иван_2531 как решение

Решение

Иван_2531, они должны быть полями класса. Иначе они существуют только пока работает конструктор.
0
Неэпический
 Аватар для Croessmah
18129 / 10713 / 2064
Регистрация: 27.09.2012
Сообщений: 27,005
Записей в блоге: 1
03.02.2016, 21:51
Цитата Сообщение от Иван_2531 Посмотреть сообщение
Ну и где я сейчас схалтурил?
В чтении учебника?
C++
1
2
3
4
5
6
7
8
fun::fun()
{
    //Это локальные переменные
    double *t1 = new double;
    double *x1 = new double;
    double *y1 = new double;
    double *z1 = new double;
}
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5287 / 2375 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
04.02.2016, 08:32
Цитата Сообщение от Иван_2531 Посмотреть сообщение
не будет ли это нарушением этикета
Чавкать за столом - нарушение этикета. В рамках языка C++, пользуются несколько другой терминологией.
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,228
Записей в блоге: 1
04.02.2016, 09:36
Ощущение, что ТС не понимает назначение и устройство классов (классы - это не просто "конструктор", "деструктор" и другие страшные слова).
0
50 / 49 / 10
Регистрация: 24.01.2010
Сообщений: 225
04.02.2016, 17:27
вам надо прочитать про термин "область видимости"
для членов классов - это одно.
для переменных на стэке - это другое.

(круглый)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.02.2016, 17:27
Помогаю со студенческими работами здесь

Как вызвать виртуальную функцию из дочернего класса, если она определена и вызывается в конструкторе РОДИТЕЛЬСКОГО класса?
Ну то есть так: есть родительский и дочерний класс, в родительском определен виртуальная функция и вызывается в его конструкторе (камень...

Инициализация объектов класса в конструкторе другого класса
У меня есть класс Subscriber,в котором есть несколько объектов другого класса Date,мне нужно,чтобы при создании Subscriber объекты класса...

Наследник не видит переменные шаблонного класса предка
Проблему описал в комментариях. Кстати, если Parent сделать не шаблонным, то все ок и без this-&gt; template&lt;typename T&gt; ...

delete внутри класса для самого класса
Доброго времени суток, пишу программу для работы с матрицами. По условию дали лишь несколько библиотек, ни векторов ни cstdio. Для...

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


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

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

Новые блоги и статьи
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru