Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
3 / 3 / 0
Регистрация: 28.11.2018
Сообщений: 238
1

Почему не видно методов класса

07.04.2019, 00:37. Показов 3342. Ответов 5
Метки нет (Все метки)

Почему не видно методов класса, если не задаю конструктору явных параметров? А когда задаю, всё видно... Почему так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Bullet {
    const int dam;
    int x;
public:
    Bullet(int px = 0, const int pdam = 100) : dam(pdam), x(px) {
        cout << "Constructor is working!" << endl;
        cout << "x = " << x << endl;
        cout << "Damage = " << dam << endl;
    }
    void Get() {
        cout << "x = " << x << endl;
        cout << "Damage = " << dam << endl;
    }
};
 
int main() {
    Bullet b1();//Bullet b1(1); - сделаю хотя бы так - всё окей
    b1.Get();//не видит
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2019, 00:37
Ответы с готовыми решениями:

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

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным ...

Как вынести описание методов вложенного класса за пределы класса?
Подскажите, пожалуйста, как мне вынести описание методов вложенного класса за пределы класса?

Наследование: Как мне определить любой из методов заданного класса внутри другого класса?
Добрый день, подскажите пожалуйста, что я делаю не так Есть файл Container.h в котором храню...

5
nd2
3422 / 2802 / 1252
Регистрация: 29.01.2016
Сообщений: 9,426
07.04.2019, 00:58 2
Цитата Сообщение от MJ_PRUTYG Посмотреть сообщение
Почему не видно методов класса, если не задаю конструктору явных параметров?
Цитата Сообщение от MJ_PRUTYG Посмотреть сообщение
C++
1
Bullet b1();
Потому, что функцию объявил, а не объект создал.
C++
1
Bullet b1;
0
32 / 21 / 12
Регистрация: 13.09.2017
Сообщений: 74
07.04.2019, 01:10 3
Лучший ответ Сообщение было отмечено zss как решение

Решение

Дело в том, что у вас конструктор должен принимать два значения. Если у вас конструктор принимает все значения по умолчанию, это значит что он и так будет вызван, если вы не укажете явно других значений (то есть замените значения по умолчанию своими). Пытаться вызвать в этом случае конструктор НЕ НУЖНО, равно как и не нужно вызывать конструктор по умолчанию.

C++
1
2
Bullet b1; // заметьте, явно пытаться вызывать конструктор не нужно
b1.Get();// ok: все видит
В вашем случае, компилятор интерпретирует эту запись как объявление функции, возвращающей результат типа Bullet:

C++
1
Bullet b1(); // компилятор: объявляю функцию с именем b1, возвращающую переменную типа Bullet и не принимающую аргументов
1
3 / 3 / 0
Регистрация: 28.11.2018
Сообщений: 238
07.04.2019, 10:33  [ТС] 4
JesD, Ааа, точно. Спасибо! Это я уже что-то....
Кстати, всё время интересно было. А что это тогда за функция? Там же не указано перед ней ничего, не void, не int итд???Что это за функция такая?
0
nd2
3422 / 2802 / 1252
Регистрация: 29.01.2016
Сообщений: 9,426
07.04.2019, 10:39 5
Цитата Сообщение от MJ_PRUTYG Посмотреть сообщение
Там же не указано перед ней ничего
Так уж и ничего? А Bullet - это разве не тип данных?
1
3 / 3 / 0
Регистрация: 28.11.2018
Сообщений: 238
07.04.2019, 10:43  [ТС] 6
nd2, моя внимательность... понял, спасибо))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2019, 10:43

Вызов методов класса из двойного указателя на экземпляр класса
Добрый день! Как можно вызвать метод класса по двойному указателя на его экземпляр? struct...

Составить описание класса "3D вектор". Объявить объекты класса и продемонстрировать работу методов
Возникли сложности при решении задачи. Буду признателен тем, кто поможет. Задание: Составить...

В наследнике не видно членов базового класса
в чем ошибка кто подскажет? )).... val не видит #include&lt;iostream&gt; #include&lt;conio.h&gt; using...

Почему БЕЗОШИБОЧНО создаётся файл, а его не видно?
Друзья! Вот простой код, создаётся файл, а имя для него генерит функция tmpnam; Но файла не...


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

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

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