Я начинаю попытку последней проблемы с ++ проблемами в этой ссылке: http://www.cplusplus.com/forum/articles/12974/ Это называется Graduation. После того как я начал его кодировать, я решил отделить определение класса в файл заголовка. (помните об этом, если в первый раз я когда-либо определял свой собственный заголовочный файл.) Я попытался определить функцию-член класса заголовка в main.cpp, но возвращает ошибку.Ошибка: ожидаемый неквалифицированный идентификатор до 'bool'
Вот определение функции оператора, что дает ошибку:
//in main.cpp
Bunny::bool operator>(const Bunny &comparison) //ERROR!!! expected unqualified-id before 'bool'
{
if (badbunny == false && comparison->badbunny == true)
return true;
if (badbunny == true && comparison->badbunny == false)
return false;
else if (badbunny == comparison->badbunny) {
//......blah..blah..blah....nothing special here
}
Вот определение класса заголовка:
//in Bunny class.h
class Bunny
{
public:
const char * name;
const char * color;
int age;
char sex;
bool badbunny;
Bunny *next;
//default constructor
Bunny();
Bunny(char * M_color);
//operators
bool operator<(const Bunny &comparison);
bool operator>(const Bunny &comparison);
};
Однако, когда я печатаю определение класса (и некоторые другие заявления от файл заголовка, который я не вводил здесь) прямо в main.cpp и не беспокоиться ни о каких файлах заголовков, мой компилятор не дает мне никаких ошибок. Как вы можете видеть, «bool operator> (const Bunny & сравнение);" четко объявляется в файле заголовка. Почему я не могу получить доступ к нему из main.cpp? Я четко # include'd "Bunny class.h" в main.cpp, и заголовочный файл имеет охрану и все такое.
'Bunny :: bool operator> (...' должен быть 'bool Bunny :: operator> (...' – WhozCraig
@WhozCraig хорошо, что он избавился от этой ошибки, получил shitload более позднее в программе, хотя XD Просто интересно, зачем мне писать это так, когда я могу написать Bunny: bool operator без каких-либо проблем, но только если я наберу определение класса в main.cpp? – Nikita
Потому что вы должны сообщить компилятору контекст пространства имен оператора, который вы определяете * как-то *, это может показаться банальным, но это просто то, как работает язык. Выполняя то, что я описал, вы сообщаете компилятору «это оператор' bool <'функция, объявленная в классе 'Bunny'. – WhozCraig