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

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

Войти
Регистрация
Восстановить пароль
 
Tolias28
206 / 123 / 2
Регистрация: 18.08.2010
Сообщений: 1,011
#1

Как объявить глобальную ссылку на клас с конструктором, принимающим один параметр - C++

07.05.2012, 20:48. Просмотров 846. Ответов 3
Метки нет (Все метки)

Столкнулся с проблемой. Пытаюсь в классе №1 создать переменную класса №2, а уже потом в конструкторе класса №1 проинициализировать его, но не получается Компилятор сыпет мне кучу ошибок:
Error 1 error C2512: 'BinaryFile' : no appropriate default constructor available 71 1
Error 2 error C2064: term does not evaluate to a function taking 1 arguments 73 1
3 IntelliSense: no default constructor exists for class "BinaryFile" 72 2
4 IntelliSense: call of an object of a class type without appropriate operator() or conversion functions to pointer-to-function type 73 3
Ругается он именно на это место:
C++
1
2
3
4
5
    PhoneBook(string fileName)
    {
        bf(fileName);
        count = bf.GetNumberRecords();
    }
А весь код вот:
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
struct pb_record{
    char name[25];
    int number;
};
 
class BinaryFile
{
private:
    string fileName;
public:
    BinaryFile(string fName)
    {
        fileName = fName;
    }
 
    bool AddRecord(pb_record pbr)
    {
        ofstream ofs(fileName, ios::binary | ios_base::in | ios_base::out);
        if (!ofs.is_open())
        {
            cout << "Unable to open file \"" << fileName << "\"" << endl;
            return false;
        }
 
        ofs.seekp(0, ios::end);
        ofs.write((char*)&pbr, sizeof(pb_record));
        ofs.close();
        return true;
    }
 
    int GetNumberRecords()
    {
        int count;
        ifstream ifs (fileName, ios::binary);
        if (!ifs.is_open())
        {
            count = 0;
        }
        else
        {
            ifs >> count;
        }
        ifs.close();
        return count;
    }
};
 
class PhoneBook
{
private:
    BinaryFile bf;
    int count;
public:
    PhoneBook(string fileName)
    {
        bf(fileName);
        count = bf.GetNumberRecords();
    }
 
    void Add()
    {
        pb_record pbr;
        cout << "Enter people name: ";
        cin >> pbr.name;
        cout << "Enter phone number: ";
        cin >> pbr.number;
        if(bf.AddRecord(pbr))
            cout << "Record successfully added!" << endl;
        else
            cout << "Could not add record." << endl;
    }
 
    //void Delete(int number);
    //void ShowRecord(int number);
    //void ShowAll(int number);
    //void Find(string peopleName);
};
 
int main()
{
    PhoneBook pb("PhoneBook.bin");
    fflush(stdin);
    cin.get();
}
Помогите пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2012, 20:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как объявить глобальную ссылку на клас с конструктором, принимающим один параметр (C++):

Как объявить глобальную переменную в Dev-C++ 4.9.9.2? - C++
Попробовал написать из справочника по С++ такую программу: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; void...

Немогу объявить глобальную переменную - C++
В пустом заголовочном файле пишу int some_global_variable; и компилятор выдает ошибку hand.obj : error LNK2005: &quot;int...

.NET 3.x Как объявить глобальную переменную - Visual Basic .NET
При объявление Public ничего не происходит Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles...

Как объявить глобальную переменную? - C#
Как объявить глобальную переменную?у меня 16 блоков и нужно чтобы она была доступна всем блокам Добавлено через 12 минут В С#.

Как объявить глобальную переменную - C#
Вот код /* * Created by SharpDevelop. * User: admin * Date: 30.06.2014 * Time: 18:36 * * To change this template...

Как объявить глобальную переменную? - C++/CLI
подскажите люди добрые, как объявить(а точнее где?) в form2 (которая вызывается из form1) глобальную переменную, ну или структуру,например...

3
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
07.05.2012, 21:11 #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
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
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
struct pb_record{
    char name[25];
    int number;
};
 
class BinaryFile
{
private:
    string fileName;
public:
    BinaryFile(string fName):fileName(fName){}
 
    bool AddRecord(pb_record pbr)
    {
        ofstream ofs(fileName.c_str(), ios::binary | ios_base::in | ios_base::out);
        if (!ofs.is_open())
        {
            cout << "Unable to open file \"" << fileName << "\"" << endl;
            return false;
        }
 
        ofs.seekp(0, ios::end);
        ofs.write((char*)&pbr, sizeof(pb_record));
        ofs.close();
        return true;
    }
 
    int GetNumberRecords()
    {
        int count;
        ifstream ifs (fileName.c_str(), ios::binary);
        if (!ifs.is_open())
        {
            count = 0;
        }
        else
        {
            ifs >> count;
        }
        ifs.close();
        return count;
    }
};
 
class PhoneBook
{
private:
    BinaryFile bf;
    int count;
public:
    PhoneBook(string fileName):bf(fileName)
    {
 
        count = bf.GetNumberRecords();
    }
 
    void Add()
    {
        pb_record pbr;
        cout << "Enter people name: ";
        cin >> pbr.name;
        cout << "Enter phone number: ";
        cin >> pbr.number;
        if(bf.AddRecord(pbr))
            cout << "Record successfully added!" << endl;
        else
            cout << "Could not add record." << endl;
    }
 
    //void Delete(int number);
    //void ShowRecord(int number);
    //void ShowAll(int number);
    //void Find(string peopleName);
};
 
int main()
{
    PhoneBook pb("PhoneBook.bin");
    fflush(stdin);
    cin.get();
}
Добавлено через 2 минуты
Цитата Сообщение от Tolias28 Посмотреть сообщение
PhoneBook(string fileName) { bf(fileName); count = bf.GetNumberRecords(); }
на это ругается потому что надо использовать список инициализации
1
Tolias28
206 / 123 / 2
Регистрация: 18.08.2010
Сообщений: 1,011
07.05.2012, 21:12  [ТС] #3
antoha398, огромное огромное спасибо за помощь!
0
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
07.05.2012, 21:35 #4
Цитата Сообщение от Tolias28 Посмотреть сообщение
C++
1
fflush(stdin);
Why fflush(stdin) is wrong

Добавлено через 1 минуту
Буфер ввода можно очистить вот таким образом
C++
1
2
3
#include <limits>
//...
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
1
07.05.2012, 21:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2012, 21:35
Привет! Вот еще темы с ответами:

Как объявить глобальную константу? - MS Access
Пример из хелпа не работает: ' Declare Public constant. Public Const MyString = 'HELP'

Как объявить глобальную переменную? - VBA
Угораздило установить Офис2003... :-/ неужели нельзя больше использовать необъявленные переменные?!? и самое главное: Как...

Как объявить глобальную переменную - Visual Basic .NET
Собственно вопрос может показаться глупым, но я прочитал много статей и так и не нешёл ответ.

Как правильно объявить глобальную переменную? - JavaScript
Суть задачи вывести знак зодиака и стихию в зависимости от даты рождения. Глобальная переменная получается undefined и условия изменения ее...


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

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

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