Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > почему VC 6 не может найти описание класса


Автор: yngwie19 10.12.2008, 20:04
Привет Всем, сталкнулся с такой проблемой. Когда в хэдере создаю класс и в конструкторе указываю аргументы по умолчанию, например:
Код

class Point(float = 0, float = 0) 
 
и описываю эту функцию в файле Point.cpp. Если мне хочется найти описание этой функции, Я через WizardBar для данного класса выбираю функцию Point, на что компилятор ругается "Cannot find the definition for this function". Если в прототипе не указывать аргументы по умолчанию, то все нормально. Не то чтобы это мешает, т.к все компилтся без проблем, но хочется понять. Нужно что в описании функции тоже писать нули для двух переменных float ? 

Хотя тоже самое   

Автор: mes 10.12.2008, 22:16
Цитата(yngwie19 @  10.12.2008,  20:04 Найти цитируемый пост)
    
class Point(float = 0, float = 0) 

а не подскажите что вобще это за чудо строчка ??  smile 
если так пишите, то вполне возможно что студия просто не понимает чего Вы хотите )

Автор: yngwie19 10.12.2008, 22:59
mes, эээ прошу прощения. 
Код

class Pont
   pulic:
    Point(float = 0.0, float = 0.0); 

Автор: Kallikanzarid 11.12.2008, 08:37
Здесь код правильный.

Автор: mes 11.12.2008, 10:51
Цитата(Kallikanzarid @  11.12.2008,  08:37 Найти цитируемый пост)
Здесь код правильный. 

Цитата(yngwie19 @  10.12.2008,  22:59 Найти цитируемый пост)
class Pont
   pulic:
    Point(float = 0.0, float = 0.0); 

за исключением опечатки в названии класса ( Pont вместо Point) и отсутствия открывающей скобки.  smile 

Kallikanzarid, вопрос то был в другом ...  smile 

Цитата(yngwie19 @  10.12.2008,  20:04 Найти цитируемый пост)
Я через WizardBar для данного класса выбираю функцию Point, на что компилятор ругается "Cannot find the definition for this function". Если в прототипе не указывать аргументы по умолчанию, то все нормально. Не то чтобы это мешает, т.к все компилтся без проблем, но хочется понять. Нужно что в описании функции тоже писать нули для двух переменных float ? 

Если нужны параметры по умолчанию, то нужно. 

Автор: J0ker 11.12.2008, 18:32
Цитата(mes @  11.12.2008,  10:51 Найти цитируемый пост)
Если нужны параметры по умолчанию, то нужно. 

нет

Автор: yngwie19 11.12.2008, 18:43
J0ker, а как тогда

Автор: J0ker 11.12.2008, 19:07
аргументы по умолчанию не могут переопределяться в определении функции - они могут только добавляться, и это добавление будет действительно только в текущем модуле трансляции

Добавлено через 6 минут и 20 секунд
вообще не совсем понятно, что такое описание функции
есть объявление (declaration) и определение (definition)

Автор: yngwie19 11.12.2008, 19:58
J0ker, ну в смысле определение. Так как быть, почему когда в объявлении пишу float = 0, то выдается ошибка описанная мной выше

Автор: J0ker 11.12.2008, 20:15
Цитата(yngwie19 @ 11.12.2008,  19:58)
J0ker, ну в смысле определение. Так как быть, почему когда в объявлении пишу float = 0, то выдается ошибка описанная мной выше

вообще это не компилятор ругается - у мелкософта эта примочка называется IntelliSense - ее довольно часто переклинивает
в часности, был когда-то вариант, что ее переклинивало когда когда имена аргументов в объявлении и определении не совпадали

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)