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

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

Войти
Регистрация
Восстановить пароль
 
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
#1

new не работает со структурой у которой перегружены скобки - C++

21.01.2013, 13:47. Просмотров 623. Ответов 10
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Coordinate
{
    int x,y;
    Coordinate(int a1, int b1) : x(a1),y(b1) { }
    void operator()(int a,int b)
    {
        x=a;
        y=b;
    }
};
Quad::Quad()
{
    cord=new Coordinate[4](0,0);
}
ругается на предпоследнюю строчку, как быть?
в другом классе запись вида
C++
1
cord=new Coordinate(0,0);
работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2013, 13:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос new не работает со структурой у которой перегружены скобки (C++):

Реализовать программу, в которой перегружены функции для определения минимального из трех своих аргуентов - C++
Помогите пожалуйста сделать задачу. Реализовать программу, в которой перегружены функции для определения минимального из трех своих...

как работает fwrite() и fread() со структурой? - C++
Добрый день, у меня вопрос: 1) Каким образом я могу записать структуру в файл функцией fwrite, а потом ещё и достать из него эту...

Меню для программы в которой создается массив от записи со структурой - Free Pascal
Помогите составить меню для программы, состоящие из пунктов: -Ввод данных -Вывод всех данных -Поиск по критерию -Выход Условие...

Дана строка, в которой имеется текст в скобках. Удалить часть текста, заключенного в скобки - Pascal ABC
Дана строка, в которой имеется текст в скобках. Написать программу удаления части текста, заключенного в скобки, вместе со скобками. То что...

Дана строка, в которой имеется текст в скобках. Написать программу удаления части текста, заключенного в скобки, вместе со скобками - Turbo Pascal
Дана строка, в которой имеется текст в скобках. Написать программу удаления части текста, заключенного в скобки, вместе со скобками....

После окончания работы со структурой, она будет почищена сборщиком. Что произойдет со структурой в неуправляемой памяти - C#
Доброго времени суток. Прочитал закрепленный топик "Класс Marshal, использование PInvoke, небезопасный код (unsafe)". Возник вопрос,...

10
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
21.01.2013, 13:51 #2
operator() тут вообще непричем. Не замечаешь, что у тебя эти две записи не одинаковые?
error: parenthesized initializer in array new
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
21.01.2013, 13:52 #3
Tiva, при выделении с помощью new[] все объекты конструируются с помощью конструктора по умолчанию; использовать для этого другой конструктор не получиться.
1
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
21.01.2013, 13:53  [ТС] #4
Цитата Сообщение от Герц Посмотреть сообщение
operator() тут вообще непричем. Не замечаешь, что у тебя эти две записи не одинаковые?
error: parenthesized initializer in array new
а что в них не одинакового?
в одном случае мне надо 1 элемент выделить с значениями 0,0, а другом массив таких элементов.

Добавлено через 1 минуту
Цитата Сообщение от gray_fox Посмотреть сообщение
Tiva, при выделении с помощью new[] все объекты конструируются с помощью конструктора по умолчанию; использовать для этого другой конструктор не получиться.
ясно, а какие варианты? malloc? как тогда это написать? просто я малок никогда вообще не использовал
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
21.01.2013, 13:56 #5
Цитата Сообщение от Tiva Посмотреть сообщение
а какие варианты?
Добавить конструктор по умолчанию.
1
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
21.01.2013, 13:59  [ТС] #6
Цитата Сообщение от gray_fox Посмотреть сообщение
Добавить конструктор по умолчанию.
да, уже сделал, теперь программа крашится
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
struct Coordinate
{
    int x,y;
    Coordinate(){}
    Coordinate(int a1, int b1) : x(a1),y(b1) { }
    void operator()(int a,int b)
    {
        x=a;
        y=b;
    }
};
class Point
{
protected:
    Coordinate *cord;
public:
    Point();
    Point(Coordinate&);
    ~Point();
};
Point::Point()
{
    cord=new Coordinate(0,0);
}
Point::Point(Coordinate& c)
{
    cord->x=c.x;
    cord->y=c.y;
}
Point::~Point()
{
    delete cord;
}
class Quad:public Point
{
public:
    Quad(Coordinate *cord);
    Quad(Coordinate&);
    Quad();
    ~Quad();
    void print();
};
void Quad::print()
{
    for(int i=0; i<4; i++)
    {
        cout<<"("<<cord[i].x<<"; "<<cord[i].y<<")\n";
    }
}
Quad::Quad(Coordinate& c1)
{
    Point::Point(c1);
}
Quad::Quad()
{
    cord=new Coordinate[4];
    for(int i=0; i<4; i++)
    {
        cord[i].x=0;
        cord[i].y=0;
    }
}
Quad::~Quad()
{
    delete[] cord;
}
 
int main(void)
{
    Coordinate c(1,2);
    Point p(c);
    system("pause");
}
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
21.01.2013, 14:02 #7
C++
1
2
3
4
Quad::Quad(Coordinate& c1)
{
    Point::Point(c1);
}
Это как? У меня даже не скомпилилось.

C++
1
2
3
4
5
Quad::Quad(Coordinate& c1)
    :Point(c1)
{
    
}
1
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
21.01.2013, 14:04  [ТС] #8
Цитата Сообщение от Schizorb Посмотреть сообщение
C++
1
2
3
4
Quad::Quad(Coordinate& c1)
{
    Point::Point(c1);
}
Это как? У меня даже не скомпилилось.

C++
1
2
3
4
5
Quad::Quad(Coordinate& c1)
    :Point(c1)
{
    
}
билдер откомпилил
но краш не в этом, в мейне то я объявлял родительский класс Point и ошибка в другом конструкторе, только не могу понять в чем ошибка.
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
21.01.2013, 14:08 #9
Цитата Сообщение от Tiva Посмотреть сообщение
class Quadublic Point
Во-первых, зачем вообще наследование, во-вторых, в курсе, как работают конструкторы\деструкторы? Получается:
C++
1
2
3
4
coord = new Coordinate(0, 0); // В конструкторе Point
coord = new Coordinate[4];    // В конструкторе Quad - утечка памяти
delete[] coord;  // В деструкторе Quad
delete coord; // В деструторе Point - delete к тому, что уже освобождено
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
21.01.2013, 14:10 #10
Цитата Сообщение от Tiva Посмотреть сообщение
только не могу понять в чем ошибка.
C++
1
2
3
4
5
Point::Point(Coordinate& c)
{
    cord->x=c.x;
    cord->y=c.y;
}
На что тут указывает coord? Память-то не выделена, вот и краш.
1
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
21.01.2013, 14:19  [ТС] #11
Цитата Сообщение от gray_fox Посмотреть сообщение
Во-первых, зачем вообще наследование, во-вторых, в курсе, как работают конструкторы\деструкторы? Получается:
C++
1
2
3
4
coord = new Coordinate(0, 0); // В конструкторе Point
coord = new Coordinate[4];    // В конструкторе Quad - утечка памяти
delete[] coord;  // В деструкторе Quad
delete coord; // В деструторе Point - delete к тому, что уже освобождено
наследование по заданию
что значит утечка памяти?
как это относится к крашу программы? я же не вызываю вообще конструкторы Quad, только Point... не понимаю..

Добавлено через 5 минут
краш исправил, спасибо, глупейшая ошибка, забыл выделить память
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2013, 14:19
Привет! Вот еще темы с ответами:

На i5 первое и второе ядро перегружены на 100% - Процессоры
Здравствуйте многоуважаемые форумчане! Комп тупит, при запуске программ или открывании папок, часто подвисает и пишет, что программа не...

Составить программу удаляющую всё что заключено в скобки и сами скобки - Turbo Pascal
Здравствуйте, помогите пожалуйста составить программу удаляющую всё что заключено в скобки и сами скобки. Заранее спасибо:)

Для каждой открывающей скобки найти позицию ей соответствующей закрывающей скобки - C++
Доброго времени суток. Подскажите пожалуйста алгоритм или путь к решению задачи, используя СТЕК Дана ПСП, ваша задача для каждой...

Для каждой открывающей скобки найти позицию ей соответствующей закрывающей скобки - C#
Даны 4 вида скобок () {} &lt;&gt;. Для каждой открывающей скобки найти позицию ей соответствующей закрывающей скобки,использую стек. Помогите с...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
21.01.2013, 14:19
Ответ Создать тему
Опции темы

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