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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
4ort
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 6
#1

Инициализация класса A внутри класса B - C++

23.03.2012, 15:29. Просмотров 2511. Ответов 7
Метки нет (Все метки)

заранее извиняюсь, наверняка подобное было на одной из 1000 страниц=)...
есть 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
36
37
38
39
40
41
//собственно первый класс
class matrix        
{
private:
    //сама матрица и справочная информация для вычислений - количество строк и столбцов
    unsigned int rows, columns;
    double *M;
public:
    matrix (unsigned int row, unsigned int col)
    {
        rows=row;
        columns=col;
        M=new double [rows*columns];
        for (int i=0;i<rows*columns;i++)
            M[i]=0;
    }
    matrix (unsigned int row)
    {
        rows=row;
        columns=1;
        M=new double [rows*columns];
        for (int i=0;i<rows*columns;i++)
            M[i]=0;
    }
    
    ~matrix()
    {
        delete []M;
    }
 
//дальше различные функции по работе с матрицей
};
 
//и второй класс
class block2d   //упрощенная реализация работы двумерного блока
{
private:
    matrix wtf (3,4);   //в редакторе подчеркивает цифры 3 и 4: "error: требуется спецификатор типа"
public:
 
};
при компиляции пишет "error C2059: синтаксическая ошибка: константа", ругается на эту же строку.
если я правильно понял, ему не нравится само явление инициализации при объявлении
что делать не знаю, но matrix "почти обязательно" должен являться объектом класса block2d и храниться внутри него

почитал в книжках про наследование и дружественные классы в надежде хоть как то привязать matrix к block2d, но на данный момент успехов тоже нету
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2012, 15:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инициализация класса A внутри класса B (C++):

BST дерево. Инициализация класса внутри класса - C++
Здравствуйте, нужно реализовать класс дерева бинарного поиска с использованием итератора. Возник вопрос, как инициализировать через...

Инициализация массива строк внутри класса - C++
Доброго времени суток! Есть такая проблема... Дан класс, в нем есть массив строк и мне нужно в конструкторе ему задать начальное значение,...

Инициализация обьекта внутри другого класса - C++
Всем привет. Вообщем проблема такая. Есть несколько классов class WeaponType { }; class Swords : public WeaponType { }; ...

Создать класс CheckerBoard (особенности строения класса - инициализация константных членов класса) - C++
Вот код: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; const int xSize = 1; const int ySize = 1; class...

Инициализация членов дочернего класса членами класса родителя - C++
Есть уже созданный класс-родитель A. Как эффективно инициализировать дочерний класс B членами класса A?

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

7
NightCoder89
12 / 12 / 1
Регистрация: 22.03.2012
Сообщений: 42
23.03.2012, 15:40 #2
39 строчка некорректна, достаточно просто объявить указатель на класс matrix *р вместо matrix wtf (3,4), а потом внутри класса block2d проводить с ним манипуляции.
0
4ort
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 6
23.03.2012, 15:55  [ТС] #3
указатель я создавал, и все с ним работало, однако, в этом случае приходится отдельно создавать matrix переменную, а после этого связывать ее с данным указателем, что не совсем удобно на мой взгляд (тк в результате может быть создано неограниченное количество переменных типа block2d, и хотелось бы избежать выполнения этих операций)
да и целью является чтобы matrix лежал внутри block2d, другими словами, чтобы создавая block2d получать и matrix сразу готовеньким
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.03.2012, 15:57 #4
Цитата Сообщение от 4ort Посмотреть сообщение
отдельно создавать matrix переменную
какую отдельную?
0
NightCoder89
12 / 12 / 1
Регистрация: 22.03.2012
Сообщений: 42
23.03.2012, 15:59 #5
вызвать из конст. block2d баз. конст. matrix
1
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.03.2012, 16:05 #6
что значит унаследовать? конструкторы не наследуются, можно вызвать из конструктора-предка родительский

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class block2d   //упрощенная реализация работы двумерного блока
{
private:
        matrix* wtf;   //в редакторе подчеркивает цифры 3 и 4: "error: требуется спецификатор типа"
 
public:
 
    block2d(int f, int s)
        :wtf(new matrix(f, s))
    {
        //
    }
 
};
1
4ort
0 / 0 / 0
Регистрация: 23.03.2012
Сообщений: 6
23.03.2012, 16:27  [ТС] #7
Цитата Сообщение от PointsEqual Посмотреть сообщение
block2d(int f, int s)
* * * * :wtf(new matrix(f, s))
спасибо, как раз то что и требовалось!

Цитата Сообщение от PointsEqual Посмотреть сообщение
какую отдельную?
когда говорил отдельную, то в main сначала создавал matrix переменную, в конструкторе block2d входным параметром указывал адрес matrix-переменной, и уже так пытался работать. теперь понял что тупил.
0
villu
203 / 204 / 4
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
23.03.2012, 16:37 #8
без new/delete
C++
1
2
3
4
5
6
7
8
9
//и второй класс
class block2d 
{
    matrix wtf;  
public:
    block2d()
        :wtf(3, 4)
    {}
};
1
23.03.2012, 16:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2012, 16:37
Привет! Вот еще темы с ответами:

Создать объект внутри класса, который может вызывать функцию этого класса - C++
Ребята помогите уже несколько дней мучаюсь. Хочу сделать программу в консоле демонстрации работы лифта в здании 2 этажа. Сделал класс...

Заполнение вектора класса внутри самого класса - C++
class A { private: int a; public: A() { a = 0; }; A get(vector &lt;A&gt;* vec)

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

Объявление дружественного класса внутри класса - C++
class A{ friend class B{ B(A &amp;a); } } Подскажите пожалуйста, такое возможно или нет, я хотел чтобы...


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

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

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