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

Нестатическая ссылка не член должна указываться относительно заданного объекта - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.87
nobless1368
 Аватар для nobless1368
14 / 14 / 1
Регистрация: 04.06.2012
Сообщений: 124
Записей в блоге: 1
05.07.2012, 17:18     Нестатическая ссылка не член должна указываться относительно заданного объекта #1
Собственно проблема (пока что) в 117 и 118 строчках. Кто подскажет как её решить, тот получит от меня "спасибо" ^_^ а если серьезно, то просидел больше 4 часов над прогой и я в тупике. Гугл не помогает, иначе бы и не спрашивал. (ну или я искал коряво, что тоже, в общем то, вероятно). Буду очень признателен за помощь.
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <iostream>
#include <conio.h>
#include <stdio.h>
 
using std::cout;
using std::cin;
using std::endl;
 
const int n=10;
 
//класс для подстчета количества повторов
class CFrequency{
private:
    int num;
    int count;  //переменная для подсчета количества повторяющихся значений
public:
    bool operator<<(CFrequency& aBox);
    int Iteration(int numbers[n]);
};
 
//перегрузка оператора << для класса
bool CFrequency::operator<<(CFrequency& aBox){
    cout << count << endl;
    return 0;
}
 
//считаем количество повторяющихся значений
int CFrequency::Iteration(int numbers[n]){
    cout << "Enter the number for count" << endl;
    cin >> num;
    count=0;
    for(int i=0;i<n;i++){
        if(numbers[i]==num) count++;
    }
    cout << "Number of inerations is " << count << endl;
    return 0;
}
 
//считывание нач. данных с клавиатуры
class CFromKeyb:public CFrequency{
private:
    int numbers[n]; //поправить на задание размера вручную
public:
    int Enter(int numbers[n]);
};
 
//считывание нач. данных из файла
class CFromFile{
private:
    char ch;
public:
    int FileCheck(FILE* file);
};
 
//класс записи данных в файл
class CToFile:public CFromFile{
private:
    FILE* fp;
    int outnum; //для записи в файл (именно она будет записываться) 
public:
    void Writing();
};
 
//записываем данные в файл
void CToFile::Writing(){
    fp=fopen("test.txt","w");
    if(FileCheck(fp)==1){
        cout << "Cannot open the file" << endl;
        return;
    }
    while(outnum!=EOF){ //считываем значения, пока не будет нажато ctrl+Z
        cin >> outnum;
        fwrite(&outnum,sizeof(int),1,fp);
    }
};
 
//проверка открытия файла
int CFromFile::FileCheck(FILE* file){
    if((file=fopen("test.txt","wb"))==NULL){
        cout << "Cennot open the file" << endl;
        return 1;
    }
    else return 0;
};
    
//заполнение массива с клавиатуры
int CFromKeyb::Enter(int numbers[n]){
    for(int i=0;i<n;i++){
        cout << "Enter the number " << i+1 << ":" << endl;
        cin >> numbers[i];
    }
    return 0;
}
 
int main(){
    cout << "Hello, user! I glad to see you ^_^" << endl
        << "Chose the problem: " << endl
        << "1.Frequency of iterations" << endl
        << "2.Search for max number" << endl
        << "3.Search for min number" << endl
        << "4.Consider the summ of numbers" << endl;
    int check;
    cin >> check;
    //проверяем ввод (ДОПИЛИТЬ ОБРАБОТКУ СИМВОЛОВ)
    if(check!=1 & check!=2 & check!=3 & check!=4){
        cout << endl << "Wrong input" << endl<< endl;
        main();
    }
    switch(check){
    case 1:{
        cout << "Select a input method: " << endl
            << "1.From keyboard" << endl
            << "2.From file" << endl;
        int choise=0;
        cin >> choise;
        switch(choise){
        case 1: CFromKeyb.Enter();
        case 2: CToFile.Writing();
    }
    getch();
    return 0;
}
З.Ы. а вообще задание у меня звучит так:
Реализовать класс (условно назовем «класс А»), содержащий метод «Б», который для массива целых чисел вычисляет частоту повторения различных чисел и сохраняет результат у себя внутри. Также в этом классе реализовать оператор << для вывода частот на экран. Метод рассчета частот должен получать данные от специального объекта-поставщика данных. То есть параметром этого метода должен быть указатель или ссылка на объект-поставщик данных. Реализовать два класса-поставщика данных, один из которых предоставляет для обработки данные, считанные из файла, а другой – введенные с клавиатуры. Классы-поставщики данных должны наследоваться от общего базового класса. И наконец от «класса А» унаследовать класс, в котором реализовать (переопределить) метод «Б» таким образом: для массива целых чисел вычислить минимальное и максимальное число, а также сумму чисел. Переопределить оператор << для вывода результата на экран.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2012, 17:18     Нестатическая ссылка не член должна указываться относительно заданного объекта
Посмотрите здесь:

C++ Член-ссылка на другой член класса
Написать форму ввода для заданного объекта. C++
Ссылка на объект не указывает на экземпляр объекта C++ C++
нестатическая ссылка на член должна указываться относительного заданного объекта C++
Нестатическая ссылка в статичной (BOOL CALLBACK EnumWindowsProc) функции внутри класса C++
C++ Найти первый член последовательности по модулю меньший заданного числа
Error C2355: this: может указываться только в нестатических членах-функциях C++
Положение точки относительно заданного эллипса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6159 / 2888 / 282
Регистрация: 04.12.2011
Сообщений: 7,686
Записей в блоге: 3
05.07.2012, 17:27     Нестатическая ссылка не член должна указываться относительно заданного объекта #2
CFromKeyb.Enter();
Это попытка вызвать метод не создавая экземпляра. Попробуйте так:
CFromKeyb a;
a.Enter();
nobless1368
 Аватар для nobless1368
14 / 14 / 1
Регистрация: 04.06.2012
Сообщений: 124
Записей в блоге: 1
05.07.2012, 17:30  [ТС]     Нестатическая ссылка не член должна указываться относительно заданного объекта #3
омг, на ровном месте встал xD спасибо))
Yandex
Объявления
05.07.2012, 17:30     Нестатическая ссылка не член должна указываться относительно заданного объекта
Ответ Создать тему
Опции темы

Текущее время: 20:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru