Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> расделение на файлы, неясная ошибка 
:(
    Опции темы
fuckingniger
Дата 12.10.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



Есть класс.Он разделен на 2 файла(h и cpp)

в h файле объявлена стркутура  . в классе обявлен элемент типа структуры (в private )

в конструкторе (в срр ) в инициализаторе производится инициализация этого элемента(типа структура) 


Код

general_pay::general_pay(const string& first,const string& last,const string& passport , int proc ,double sum_sale): name.first_name(first), name.last_name(last) , number_of_passport(passport) //инициализатор


компилятору это сильно не нравится .

Что скажете, господа???

Добавлено @ 00:06
могу код привести если надо...(но не уверен в этом)

Добавлено @ 00:08
1>c:\users\redwhite\documents\visual studio 2008\projects\наследование(зарплата)\наследование(зарплата)\general_pay.cpp(3) : error C2059: syntax error : '.'


Это сообщение отредактировал(а) fuckingniger - 13.10.2010, 00:09
PM MAIL   Вверх
baldina
Дата 13.10.2010, 00:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



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

Добавлено через 1 минуту и 12 секунд
собственно, name.first_name(first) есть инициализация члена структуры, а не самой структуры...
PM MAIL   Вверх
fuckingniger
Дата 13.10.2010, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



а почему такое присваивание не является допустимым?
PM MAIL   Вверх
djamshud
Дата 13.10.2010, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Код

struct s{
int a,b;
char const *str;};

class c{
public:
struct s ss;
public:
c():ss{1,2,"hello"}{}
};

int main(){
c cc;
printf("%d\n",cc.ss.a);
return 0;}


Это сообщение отредактировал(а) djamshud - 13.10.2010, 00:26


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
fuckingniger
Дата 13.10.2010, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



ааааааа ...да)

спасибо)
PM MAIL   Вверх
djamshud
Дата 13.10.2010, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Пожалуйста.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
fuckingniger
Дата 13.10.2010, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



а кстати не заработало((
было (работало)
Код

general_pay::general_pay(const string& first,const string& last,const string& passport , int proc ,double sum_sale)
: number_of_passport (passport) //инициализатор
{
    name.first_name=first;
    name.last_name=last;
    set_procent_of_sale(proc);
    set_sum_of_sale(sum_sale);
}

а стало
Код

general_pay::general_pay(const string& first,const string& last,const string& passport , int proc ,double sum_sale)
: number_of_passport (passport),name{first,last} //инициализатор
{
    set_procent_of_sale(proc);
    set_sum_of_sale(sum_sale);
}


Это сообщение отредактировал(а) fuckingniger - 13.10.2010, 00:50
PM MAIL   Вверх
fuckingniger
Дата 13.10.2010, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



djamshud
и у меня твой код не компилится

Код

# include <iostream>
struct s{
    int a,b;
    char const *str;};

    class c{
    public:
        struct s ss;
    public:
        c():ss{1,2,"hello"}{}
    };

    int main(){
        c cc;
        printf("%d\n",cc.ss.a);
        return 0;}


пишет
Код

1>------ Build started: Project: lil, Configuration: Debug Win32 ------
1>Compiling...
1>gfg.cpp
1>c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(10) : error C2059: syntax error : '{'
1>c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(10) : error C2334: unexpected token(s) preceding '{'; skipping apparent function body
1>c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(10) : error C2059: syntax error : '{'
1>c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(10) : error C2143: syntax error : missing ';' before '}'
1>Build log was saved at "file://c:\Users\redwhite\Documents\Visual Studio 2008\Projects\lil\lil\Debug\BuildLog.htm"
1>lil - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Добавлено через 1 минуту и 36 секунд
хотя я раньше так делал мне казалось......
ЗЫ  VS 2008
PM MAIL   Вверх
mes
Дата 13.10.2010, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(fuckingniger @  13.10.2010,  00:27 Найти цитируемый пост)
  c():ss{1,2,"hello"}{}

параметры инициализации взяты в фигурные скобки, в текущем стандарте С++ такого нет
на некоторых компиляторах (гцц) реализована как фича..

можно фигурные скобки заменить на круглые, но тогда необходимо добавить конструктор в класс s.


--------------------
PM MAIL WWW   Вверх
djamshud
Дата 13.10.2010, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



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


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
fuckingniger
Дата 13.10.2010, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



djamshud


такая инициализация  структуры работает не на всех компиляторах
PM MAIL   Вверх
djamshud
Дата 13.10.2010, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



fuckingniger, какая - такая? Прямо как я написал, да, и я это пизнал. В последнем комментарии я написал, что сделал по аналогии с обычной:
Код

struct s ss={1,2,"hello"};

А это вполне нормальная инициализация по крайней мере для С, плюсового стандарта под рукой нет, но не думаю, что там это выкинули...


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 13.10.2010, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(djamshud @  13.10.2010,  18:45 Найти цитируемый пост)
но не думаю, что там это выкинули... 

подобная инициализация  действительна только для  pod-типов.


--------------------
PM MAIL WWW   Вверх
djamshud
Дата 13.10.2010, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 8
Всего: 39



Да, а я и не заметил, что в структуре строки используются. Сорри за путаницу.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
fuckingniger
Дата 14.10.2010, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 1.10.2010

Репутация: нет
Всего: 1



ну тогда я ничего не понимаю....вот этот код у меня не компилится
Код

# include <iostream>
using namespace std;
struct s{
    int a,b;
};

int main()
{
    struct s cc{0,0};
        cout << cc.a;
        return 0;
}

а вот этот  компилится
Код

# include <iostream>
using namespace std;
struct s{
    int a,b;
};

int main()
{
    struct s cc;
    cc.a=1;
    cc.b=2;
    cout << cc.a;
    return 0;
}


Добавлено через 1 минуту и 36 секунд
вот ошибки для 1 кода
Код

1>c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(9) : error C2601: 'cc' : local function definitions are illegal
1>        c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(8): this line contains a '{' which has not yet been matched
1>c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(9) : error C2143: syntax error : missing ';' before '}'
1>c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(10) : error C2065: 'cc' : undeclared identifier
1>c:\users\redwhite\documents\visual studio 2008\projects\lil\lil\gfg.cpp(10) : error C2228: left of '.a' must have class/struct/union
1>        type is ''unknown-type''
1>Build log was saved at "file://c:\Users\redwhite\Documents\Visual Studio 2008\Projects\lil\lil\Debug\BuildLog.htm"
1>lil - 4 error(s), 0 warning(s)


Это сообщение отредактировал(а) fuckingniger - 14.10.2010, 00:21
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1152 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.