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

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

Войти
Регистрация
Восстановить пароль
 
supra7sky
15 / 15 / 1
Регистрация: 07.02.2013
Сообщений: 123
#1

.h и .cpp файлы, бредовые ошибки после разбиения класса - C++

18.05.2013, 01:22. Просмотров 488. Ответов 1
Метки нет (Все метки)

Какая то проблема со string
Во всех функциях в файле реализации одна ошибка: Несоответствие списка аргументов, отсутствуют экземпляры

В чем хотя бы ошибка? В коде или что то с компилятором? Может неправильно инклуды написал?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Material {
public:
    string   name;
    unsigned count;
    double   price_one,
            _price_all;
 
// Конструкторы
    Material(string NAME, unsigned COUNT, double PRICE_ONE);
 
// Инициализация
    void Init(string NAME, unsigned COUNT, double PRICE_ONE);
 
//Ввод/Вывод
    friend fstream &operator>> (fstream &, Material &);
};
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
#include "Material.h"
 
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
 
/* Конструкторы */
Material::Material(std::string NAME, unsigned COUNT, double PRICE_ONE) // Ошибка здесь
{
     name = NAME;
     count = COUNT;
     price_one = PRICE_ONE;
    _price_all = price_one * double(count);
}
 
/* Инициализация */
void Material::Init(string NAME, unsigned COUNT, double PRICE_ONE) // и здесь
{
     name = NAME;
     count = COUNT;
     price_one = PRICE_ONE;
    _price_all = price_one * double(count);
}
 
fstream &operator>> (fstream &stream, Material &obj) {
    getline(stream, obj.name);  // и здесь
    stream.read( (char*)&obj.count,      sizeof(obj.count)      );
    stream.read( (char*)&obj.price_one,  sizeof(obj.price_one)  );
    stream.read( (char*)&obj._price_all, sizeof(obj._price_all) );
    return stream;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 01:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос .h и .cpp файлы, бредовые ошибки после разбиения класса (C++):

Компилятор выдает бредовые ошибки - C++
1&gt;f:\lessons\c++\projects-2013\students-beta\students\usestudents.cpp(4): error C2628: недопустимый &quot;Students&quot; с последующим &quot;int&quot;...

Заголовочные файлы и файлы cpp - C++
Со временем сложилось представление что при написании программ стоит разделять МЕТА данные и данные, но для лучшего понимания своих...

Файлы .cpp и .h - C++
Добрый день! Подскажите, пожалуйста, как в программу добавить файлы .cpp и .h? Эти файлы уже написаны и их осталось только подключить к...

Файлы .h и .cpp - C++
Мне надо подключить несколько файлов к проекту. Какие надо использовать .h или .cpp ? И вообще какая между ними разница???

.h и .cpp файлы - C++
Если я объявляю в одном .h файле 3 класса, то могу ли я сделать полное определение методов для 3 классов в одном .cpp файле?

Заголовочные файлы .h и .cpp - C++
Создаю библиотеку для работы с матрицами (функции): matrix.cpp: namespace MatrixFuncs { double...

1
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
18.05.2013, 02:45 #2
supra7sky, не совсем практично использовать сразу std::fstream для чтения с файла. Гораздо лучше использовать класс по иерархии выше(прародителя) std::istream, a затем в конекетной реализации просто указать уже oбъект класса std::fstream (если будет такая необходимость). Но если конкретно уверенны, что будете использовать именно std::fstream, то оставьте его как и было.
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
// material.h
 
#ifndef _MATERIAL_H_
#define _MATERIAL_H_
 
#include <string>
#include <istream>
 
class Material;
std::istream& operator>>(std::istream &, Material &);
 
class Material {
public:
    std::string   name;
    unsigned count;
    double   price_one,
            _price_all;
 
// Конструкторы
    Material(std::string NAME, unsigned COUNT, double PRICE_ONE);
 
// Инициализация
    void Init(std::string NAME, unsigned COUNT, double PRICE_ONE);
 
//Ввод/Вывод
    friend std::istream &operator>> (std::istream &, Material &);
};
 
#endif
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
// material.cpp
 
#include "material.h"
 
#include <iomanip>
#include <iostream>
 
/* Конструкторы */
Material::Material(std::string NAME, unsigned COUNT, double PRICE_ONE) // Ошибка здесь
{
     name = NAME;
     count = COUNT;
     price_one = PRICE_ONE;
    _price_all = price_one * double(count);
}
 
/* Инициализация */
void Material::Init(std::string NAME, unsigned COUNT, double PRICE_ONE) // и здесь
{
     name = NAME;
     count = COUNT;
     price_one = PRICE_ONE;
    _price_all = price_one * double(count);
}
 
std::istream &operator>> (std::istream& stream, Material &obj) {
    std::getline(stream, obj.name);  // и здесь
    stream.read( (char*)&obj.count,      sizeof(obj.count)      );
    stream.read( (char*)&obj.price_one,  sizeof(obj.price_one)  );
    stream.read( (char*)&obj._price_all, sizeof(obj._price_all) );
    return stream;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2013, 02:45
Привет! Вот еще темы с ответами:

Куда пропадают .cpp и .h файлы? - C++
Вопрос следующий... Вот например есть программа winrar-архиватор. При разработке этой программы в проекте присутствовали .cpp и .h фалы....

Разделение кода на cpp и h файлы - C++
Добрый день. Расскажите, пожалуйста, как разделить код на два файла cpp и файл h. #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

Разбить main.cpp на файлы - C++
Есть вот такой main.cpp: #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; //#include &lt;stdint.h&gt; //#include &lt;limits.h&gt; ...

Inline методы класса в cpp-файле - C++
Добрый день. Будут ли inline методы также компилироваться, если их тела перенести в cpp-файл? Иногда inline методы невозможно записать...


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

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

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