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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2013, 17:02   #1
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
Радость Проблема нахождения типа в с++

Всем привет, помогите пожалуйста, в чем у меня проблема не компилируется

Код:
#include "stdafx.h"
 
 class Amerik
{
private:
	float value;
public:
	Amerik(void);
	Amerik(float);
	Metrik getMetrik();
	~Amerik(void);
};

 
class Metrik
{
private:
	float value;
public:
	Metrik(void);
	Metrik(float);
	Amerik getAmerik(void);
	~Metrik(void);
};


int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}

Metrik::Metrik(float v )
{
	value=v;
}
 
Amerik Metrik::getAmerik()
{
	return Amerik(value);
}

Amerik::Amerik(float v)
{
	value=v;
}
Metrik Amerik::getMetrik()
{
	return Metrik (value);
}
Заранее все спасибо =)

Последний раз редактировалось WizarD.89; 02.06.2013 в 17:28.
WizarD.89 вне форума Ответить с цитированием
Старый 02.06.2013, 18:00   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Всем привет, помогите пожалуйста, в чем у меня проблема не компилируется
Проблема в том, что не компилируется.
Возможно, если Вы приведёте сообщение от компилятора (желательно - с указанием строки, к которой оно относится), получится сказать что-нибудь более конструктивное.

Компилятор C++ не умеет "смотреть вперёд". Если он встречает, скажем, название класса, который будет объявлен только ниже по тексту, реакция будет "это что ещё такое?"
Abstraction вне форума Ответить с цитированием
Старый 02.06.2013, 18:09   #3
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
По умолчанию

13: error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "getMetrik"
13: error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
13: error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию

строка 13 в начале файла

Код:
 class Amerik
{
private:
	float value;
public:
	Amerik(void);
	Amerik(float);
Metrik getMetrik();
	~Amerik(void);
};
Компилятор не понимает что Metrik это тип класса.
WizarD.89 вне форума Ответить с цитированием
Старый 02.06.2013, 18:16   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Тогда см. примечание серым выше.
К счастью, есть способ сказать компилятору "увидишь дальше слово Metrik - знай, это название класса. Компилируй спокойно, определение будет потом". И делается это так:
Код:
class Metrik; //Объявление-"обещание"

class Amerik {
//...
  Metrik getMetrik(); //Использование идентификатора Metrik
};

class Metrik { //Определение Metrik.
  //...
};
Обратите внимание, что из описания компилятор узнаёт только о существовании класса Metrik, но не о его размере. Поэтому попытка, скажем, объявить в классе Amerik переменную-член типа Metrik по-прежнему кончится неудачей.
Abstraction вне форума Ответить с цитированием
Старый 02.06.2013, 18:49   #5
revizor
Форумчанин
 
Аватар для revizor
 
Регистрация: 20.01.2013
Сообщений: 146
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Обратите внимание, что из описания компилятор узнаёт только о существовании класса Metrik, но не о его размере. Поэтому попытка, скажем, объявить в классе Amerik переменную-член типа Metrik по-прежнему кончится неудачей.
В этом случае можно сделать через указатели:
Код:
class Metrik; //Объявление-"обещание"

class Amerik {
//...
  Metrik *getMetrik(); //Использование идентификатора Metrik
};

class Metrik { //Определение Metrik.
  //...
};
revizor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с описанием типа в public Trikster Общие вопросы Delphi 9 20.05.2012 17:41
Проблема с выводом типа double ArmanPrestige Общие вопросы C/C++ 3 20.02.2012 03:58
Проблема с созданием переменной типа описанной структуры NYWalker Помощь студентам 3 09.12.2011 21:08
Проблема с переопределением типа void raast777 Общие вопросы C/C++ 6 22.07.2011 14:00