Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2013, 21:48   #1
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 592
По умолчанию Создание обьекта_ у меня что-то с синтаксисом?

Доброго вечера!

Код:
#include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
   class Cat
        {
     public:
        Cat(int initialAge=5); 
        ~Cat();
        int GetAge() const; // метод доступа const функция доступа к данным-членам класса без права их изменения
        void SetAge (int age);
        void Meow();
        void Wydam()  {Bam();};   //статический метод
        int Bgsamm();
      private:
        int itsAge; // статические переменные класса (Статическое поле)
        int B;
        Cat(){itsAge=0; B=8;};
        void Bam( ){cout << "Wydam\n";
                                  int BG=itsAge+ B;
                                  cout << BG;   } 
        
        };
                                          
 // конструктор класса Cat
  Cat::Cat(int initialAge)
   {
   itsAge = initialAge;
   cout << "Cat constructor\n";
   }
 
  Cat::~Cat() // деструктор, который не выполняет никаких действий
  {
  cout << "Cat destructor\n";
  }
 
 
 int Cat::Bgsamm() 
 {
  return (itsAge++); 
 }
 
 
 Cat объект;
cpp(44): error C2668: Cat::Cat: неоднозначный вызов перегруженной функции- это на последнюю здесь строку,на строку Cat объект;А я думал я в ней создал обьект. Я думал, что Cat, который я там вписал, это класс!!Это у меня не так с синтаксом!!Нет, правда, чем Cat объект-не обьект????
Dimka-novitsek вне форума Ответить с цитированием
Старый 07.09.2013, 22:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Видимо нужно писать
Код:
Cat оъект();
Или
Код:
Cat оъект(56);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2013, 23:26   #3
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 592
По умолчанию

Нет, почему? Ведь скобки должны означать, что это функция, а это обьект, к которому надо обращаться через точку Или нет?
Dimka-novitsek вне форума Ответить с цитированием
Старый 07.09.2013, 23:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Или нет?
Подумай: Конструктор объекта имеет такое же имя. И это функция.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.09.2013, 23:45   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Цитата:
Сообщение от Dimka-novitsek Посмотреть сообщение
Нет, почему? Ведь скобки должны означать, что это функция, а это обьект, к которому надо обращаться через точку Или нет?
Вам нужно переформулировать своё высказывание. Ничего не понятно. Или лучше сделайте маленький пример.

Вы что-то хитрое такое сделали, что я метод вызвать не могу:

Код:
cout << c.GetAge();
Output:
Код:
main.cpp:62:15: error: request for member 'GetAge' in 'c', which is of non-class type 'Cat()'
Почему у Вас конструктор Сat() в области private?

Я понял, у Вас int GetAge() const; не реализован.

Последний раз редактировалось 8Observer8; 07.09.2013 в 23:57.
8Observer8 вне форума Ответить с цитированием
Старый 08.09.2013, 00:01   #6
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 592
По умолчанию

Да, может быть что угодно не то! Я действительно только разбираюсь с темой.
Dimka-novitsek вне форума Ответить с цитированием
Старый 08.09.2013, 00:04   #7
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Я сообразить не могу, почему комплятор ругается на строку:

Код:
cout << c.GetAge();
Output:
Цитата:
main.cpp:64:15: error: request for member 'GetAge' in 'c', which is of non-class type 'Cat()'
Код:
#include <string> 
#include <iostream> // для объекта cout
using namespace std;

class Cat {
public:
    Cat(int initialAge = 5);
    ~Cat();
    int GetAge() const; // метод доступа const функция доступа к данным-членам класса без права их изменения
    void SetAge(int age);
    //void Meow();

    void Wydam() {
        Bam();
    }; //статический метод
    int Bgsamm();

    Cat() {
        itsAge = 0;
        B = 8;
    };

private:
    int itsAge; // статические переменные класса (Статическое поле)
    int B;

    void Bam() {
        cout << "Wydam\n";
        int BG = itsAge + B;
        cout << BG;
    }

};

int Cat::GetAge() const {
    return itsAge;
}

// конструктор класса Cat
Cat::Cat(int initialAge) {
    itsAge = initialAge;
    cout << "Cat constructor\n";
}

Cat::~Cat() // деструктор, который не выполняет никаких действий
{
    cout << "Cat destructor\n";
}

int Cat::Bgsamm() {
    return (itsAge++);
}

int main(int argc, char** argv) {
    
    Cat c();
    cout << c.GetAge();
    
    return 0;
}
8Observer8 вне форума Ответить с цитированием
Старый 08.09.2013, 00:07   #8
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 592
По умолчанию

Да, простите. Я хотел обьявить обьект, принадлежащий классу Cat , русскими буквами
Код:
Cat объект;
Конечно, что-то не то я делаю.. А что не то?
Dimka-novitsek вне форума Ответить с цитированием
Старый 08.09.2013, 00:10   #9
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 592
По умолчанию

Вы знаете, у меня компилятор ругается имено на ту строку, пропуская нормально все вышележащие.
Dimka-novitsek вне форума Ответить с цитированием
Старый 08.09.2013, 00:12   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Я действительно только разбираюсь с темой.
Тогда ответь себе зачем тебе два конструктора класса?
Убери один из них что с параметром и твое
Код:
	    Cat c;
    cout << c.GetAge();
	return 0;
сработает нормально.

Цитата:
Я хотел обьявить обьект, принадлежащий классу Cat , русскими буквами
Русские в студии допустимы
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу прощения. Но у меня опять проблема. Написал код но что то неправельно потправте меня. Sergey 23 Visual C++ 2 15.09.2012 19:59
CheckBox, что-то у меня не получается... Snekich Microsoft Office Excel 2 18.12.2011 20:12
Меня что, кто-то атакует? Altera Свободное общение 9 03.10.2010 18:34
Меня хакнули, что делать? Alex Cones Свободное общение 6 03.03.2010 23:14
что-то у меня не получается dinozavr Помощь студентам 10 22.04.2009 21:45