14 / 14 / 2
Регистрация: 04.06.2012
Сообщений: 124
Записей в блоге: 1
1

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

05.07.2012, 17:18. Показов 52422. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно проблема (пока что) в 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;
}
З.Ы. а вообще задание у меня звучит так:
Реализовать класс (условно назовем «класс А»), содержащий метод «Б», который для массива целых чисел вычисляет частоту повторения различных чисел и сохраняет результат у себя внутри. Также в этом классе реализовать оператор << для вывода частот на экран. Метод рассчета частот должен получать данные от специального объекта-поставщика данных. То есть параметром этого метода должен быть указатель или ссылка на объект-поставщик данных. Реализовать два класса-поставщика данных, один из которых предоставляет для обработки данные, считанные из файла, а другой – введенные с клавиатуры. Классы-поставщики данных должны наследоваться от общего базового класса. И наконец от «класса А» унаследовать класс, в котором реализовать (переопределить) метод «Б» таким образом: для массива целых чисел вычислить минимальное и максимальное число, а также сумму чисел. Переопределить оператор << для вывода результата на экран.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2012, 17:18
Ответы с готовыми решениями:

нестатическая ссылка не член должна указываться относительно заданного объекта
выдает очень много этих ошибок в коде. в строчках 93, 100, 102, 104, 105, 112, 118, 119, 124,...

Ошибка: нестатическая ссылка не член должна указываться относительно заданного объекта
Есть класс class Primitive_triangle { private: GLuint VAOhandles; GLuint VBOhandles; ...

нестатическая ссылка на член должна указываться относительного заданного объекта
Подскажите что не так? (ошибка в конструкторе puckMan.cpp) gameElement.h #pragma once ...

Исправить ошибку : нестатическая на член должна указываться относительно заданного объекта
Как исправить? нестатическая на член должна указываться относительно заданного объекта в строке 95...

6
Комп_Оратор)
Эксперт по математике/физике
8935 / 4690 / 628
Регистрация: 04.12.2011
Сообщений: 13,960
Записей в блоге: 16
05.07.2012, 17:27 2
CFromKeyb.Enter();
Это попытка вызвать метод не создавая экземпляра. Попробуйте так:
CFromKeyb a;
a.Enter();
1
14 / 14 / 2
Регистрация: 04.06.2012
Сообщений: 124
Записей в блоге: 1
05.07.2012, 17:30  [ТС] 3
омг, на ровном месте встал xD спасибо))
0
4 / 4 / 0
Регистрация: 17.08.2016
Сообщений: 56
27.05.2018, 18:40 4
Ребят, а если так, то почему ошибка?
C++
1
2
3
4
class demo {
    const int lenght = 100;
    Pew pew[lenght]; // Нестатическая ссылка не член должна указываться относительно заданного объекта
};
Мне нужно массив сделать доступным для всего класса, поле

Добавлено через 4 минуты
Эврика!
C++
1
static const int lenght = 100;
0
0 / 0 / 0
Регистрация: 11.07.2018
Сообщений: 3
12.07.2018, 15:36 5
А что делать, если объект класса создавать нельзя? Можно ли обратиться к пременной класса не создавая объект этого класса?
0
4055 / 3309 / 924
Регистрация: 25.03.2012
Сообщений: 12,451
Записей в блоге: 1
12.07.2018, 15:46 6
MAKS_BAD, забудь слово "переменная класса".
0
Комп_Оратор)
Эксперт по математике/физике
8935 / 4690 / 628
Регистрация: 04.12.2011
Сообщений: 13,960
Записей в блоге: 16
12.07.2018, 23:06 7
Цитата Сообщение от MAKS_BAD Посмотреть сообщение
А что делать, если объект класса создавать нельзя? Можно ли обратиться к пременной класса не создавая объект этого класса?
Вообще, если вам не нужен объект, то нет возможности перегрузить операции в частности и создавать локальный контекcт вызова методов вообще. Зачем тогда класс? Достаточно пространства имён тогда. Впрочем, статических методов никто не отменял. Компилятор об этом и говорил:
Нестатическая ссылка не член должна указываться относительно заданного объекта
Но если бы метод и был статическим, то и в этом случае он (компилятор) не унялся бы, потому-что обращаться к такому имени нужно оператором разрешения :: а не оператором доступа к члену .
0
12.07.2018, 23:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2018, 23:06
Помогаю со студенческими работами здесь

Нестатическая ссылка на член должна указывать относительно заданного объекта
Подскажите пожалуйста как исправить не могу понять, чем ему не нравится this-&gt;m_root в качестве...

Не статическая ссылка не член должна указываться относительно заданного объекта (ООП)
Доброго времени суток. Собственно, возникла данная проблема: у меня есть один родительский класс...

Ссылка на член, не являющийся общим, должна быть ссылкой на объект
Подскажите пожалуйста, почему возникает такая ошибка в подобном коде: Public Class Form ...

Ссылка на член, не являющийся общим, должна быть ссылкой на объект при инициализации формы
Как это исправить? Из-за чего появляется это сообщение? Добавлено через 10 минут Подробности:...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru