Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
13 / 13 / 1
Регистрация: 16.12.2010
Сообщений: 265
1

Инициализация полей класса

18.06.2017, 14:03. Просмотров 545. Ответов 10
Метки нет (Все метки)


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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//sopr_grad.h
class optimization {
public:
 
int n1, n2, m;
long double **t_;
long double *s_;
long double *c_;
long double answer[10]; // значения х
 
 
optimization(int, int, long double **, long double *, long double *);
~optimization();
}

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
//sopr_grad.cpp
#include "sopr_grad.h"
 
optimization::optimization(int row, int col, long double **t, long double *s, long double *c) {
    n1 = row; //количество химических элементов
    n2 = col; //количество компонентов
    m = n2;
    t_ = new long double* [n1];
    for (int count = 0; count < n1; count++)
        t_[count] = new long double [n2];
    s_ = new long double [n1];
    c_ = new long double [n2];
    //long double *answer = new long double* [n2];
    for (int i = 0; i < n1; i++) {
        s_[i]= s[i];
        for (int j = 0; j < n2; j++)
            t_[i][j] = t[i][j];
    }
    for (int j = 0; j < n2; j++)
        c_[j] = c[j];
}
 
optimization::~optimization() {
    for (int count = 0; count < n11; count++)
        delete [] t_[count];
    delete [] s_;
    delete [] c_;
    //delete [] answer;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2017, 14:03
Ответы с готовыми решениями:

Инициализация полей класса
Приветствую всех. Не в одной книге по С++ сказано, что поля класса желательно инициализировать в...

Инициализация полей класса через vector<>
Здравствуйте, можете подсказать как правильно инициализировать поля класса, вот например есть класс...

Инициализация полей во время объявления класса
Инициализировать поля класса во время его объявления возможно только если в классе отсутствует...

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

10
nd2
3406 / 2787 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
18.06.2017, 14:47 2
Точки с запятой не вижу, после конца тела класса в sopr_grad.h.
0
13 / 13 / 1
Регистрация: 16.12.2010
Сообщений: 265
18.06.2017, 15:17  [ТС] 3
nd2, добавила, результат тот же
0
nd2
3406 / 2787 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
18.06.2017, 15:23 4
Цитата Сообщение от Mars30 Посмотреть сообщение
добавила, результат тот же
Странно, если ошибки не изменились. Сделай перестроение, и полный вывод компилятора выложи.
0
13 / 13 / 1
Регистрация: 16.12.2010
Сообщений: 265
18.06.2017, 15:26  [ТС] 5
Цитата Сообщение от nd2 Посмотреть сообщение
Странно, если ошибки не изменились. Полный вывод компилятора выложи.
Error 28 error C1903: unable to recover from previous error(s); stopping compilation C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 26 1 MDI
Error 18 error C2065: 'c_' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 15 1 MDI
Error 25 error C2065: 'c_' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 23 1 MDI
Error 9 error C2065: 'm' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 10 1 MDI
Error 7 error C2065: 'n1' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 8 1 MDI
Error 12 error C2065: 'n1' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 11 1 MDI
Error 13 error C2065: 'n1' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 12 1 MDI
Error 17 error C2065: 'n1' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 14 1 MDI
Error 20 error C2065: 'n1' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 17 1 MDI
Error 8 error C2065: 'n2' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 9 1 MDI
Error 10 error C2065: 'n2' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 10 1 MDI
Error 15 error C2065: 'n2' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 13 1 MDI
Error 19 error C2065: 'n2' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 15 1 MDI
Error 22 error C2065: 'n2' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 19 1 MDI
Error 24 error C2065: 'n2' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 22 1 MDI
Error 16 error C2065: 's_' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 14 1 MDI
Error 21 error C2065: 's_' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 18 1 MDI
Error 11 error C2065: 't_' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 11 1 MDI
Error 14 error C2065: 't_' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 13 1 MDI
Error 23 error C2065: 't_' : undeclared identifier C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 20 1 MDI
Error 1 error C2143: syntax error : missing ';' before 'using' c:\users\саша\documents\mdi\mdi\mdi\Ore_mix_comp.h 6 1 MDI
Error 2 error C2143: syntax error : missing ';' before 'using' c:\users\саша\documents\mdi\mdi\mdi\Ore_mix_comp.h 6 1 MDI
Error 3 error C2143: syntax error : missing ';' before 'using' c:\users\саша\documents\mdi\mdi\mdi\Ore_mix_comp.h 6 1 MDI
Error 29 error C2143: syntax error : missing ';' before 'using' c:\users\саша\documents\mdi\mdi\mdi\Ore_mix_comp.h 6 1 MDI
Error 5 error C2653: 'optimization' : is not a class or namespace name C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 7 1 MDI
Error 27 error C2653: 'optimization' : is not a class or namespace name C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 26 1 MDI
Error 6 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 7 1 MDI
Warning 26 warning C4508: 'optimization' : function should return a value; 'void' return type assumed C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 24 1 MDI
Warning 4 warning C4627: '#include "sopr_grad.h"': skipped when looking for precompiled header use C:\Users\Саша\Documents\MDI\MDI\MDI\sopr_grad.cpp 1 1 MDI
0
nd2
3406 / 2787 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
18.06.2017, 15:34 6
Цитата Сообщение от nd2 Посмотреть сообщение
Сделай перестроение, и полный вывод компилятора выложи.
Перестроение, и полный вывод, с начала. Это не полный. В Ore_mix_comp.h что?
0
13 / 13 / 1
Регистрация: 16.12.2010
Сообщений: 265
18.06.2017, 15:40  [ТС] 7
nd2, перестроила, то же самое все, давайте просто проект кину. Ore_mix_comp.h это форма, она не имеет отношение к этому классу
0
nd2
3406 / 2787 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
18.06.2017, 15:45 8
Выкладывай проект, но я ушёл. Только вечером смогу посмотреть.
0
13 / 13 / 1
Регистрация: 16.12.2010
Сообщений: 265
18.06.2017, 15:50  [ТС] 9
Цитата Сообщение от nd2 Посмотреть сообщение
Выкладывай проект, но я ушёл. Только вечером смогу посмотреть.
вот
0
Вложения
Тип файла: rar MDI.rar (4.48 Мб, 2 просмотров)
nd2
3406 / 2787 / 1251
Регистрация: 29.01.2016
Сообщений: 9,423
18.06.2017, 22:14 10
Цитата Сообщение от Mars30 Посмотреть сообщение
вот
Вот это компилятор разве не выдавал?
1>sopr_grad.cpp(1): warning C4627: #include "sopr_grad.h": пропущен при поиске использования предкомпилированного заголовка
1> Добавление директивы в "StdAfx.h" или перестройка предкомпилированного заголовка
Эта директива должна быть выше всех остальных инклудов:
C++
1
#include "stdafx.h"
Добавлено через 4 минуты
После тела класса Calc, точки с запятой тоже нет, и реализаций для класса нет.

Добавлено через 2 минуты
Цитата Сообщение от Mars30 Посмотреть сообщение
C++
1
2
3
optimization::~optimization() 
{ 
    for (int count = 0; count < n11; count++)
n11 откуда в классе взялся?
1
13 / 13 / 1
Регистрация: 16.12.2010
Сообщений: 265
18.06.2017, 22:32  [ТС] 11
nd2, дааа... ошибки глупые были)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2017, 22:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Инициализация полей структуры в конструкторе по-умолчанию класса
Всем привет! #include &lt;string&gt; #include &lt;vector&gt; #pragma once class StudentsList {...

Инициализация вещественных статических константных полей класса С++
static const double x=2.15; //c double и float не инициализирует. Почему??

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

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

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

Инициализация экземпляра класса, как поле другого класса
Всем доброго времени суток ! Есть класс: class a{ public: a(int _type): type(_type) {} ...


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

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

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