#c #class #object #codeblocks #header-files
Вопрос:
В настоящее время я изучаю классы и объекты в C . Я написал исходный код и файл заголовка на C в кодовых блоках. Они находятся в одной папке на моем Mac.
Когда я пытаюсь создать и запустить любой файл, CodeBlocks сообщает мне «ошибка: в «классе»нет члена с именем «x»».
Ниже приведен скриншот файла заголовка и исходного кода, сообщений об ошибках и папки проекта. Как я могу исправить это, чтобы файл исходного кода запускался и выводился?
Губная помада2.ч
#ifdef LIPSTICKWAREHOUSE2_H_INCLUDED
#define LIPSTICKWAREHOUSE2_H_INCLUDED
using namespace std;
enum Brand
{
Mac,
Glossier,
EsteeLauder
};
enum Color
{
red,
pink,
nude,
black,
brown,
gold,
silver,
other
};
enum Formula
{
matte,
sheer,
satin,
glossy
};
class Lipstick
{
public:
Brand Name;
Color LipColor;
Color Tube;
Formula Effect;
float Price;
int Rating;
};
void reccomendation(string words)
{
if (Rating <= 3)
{
cout << "I would rethink this lipstick!" << endl;
}
else
{
cout << "I would recommend this lipstick!" << endl;
}
}
#endif // LIPSTICKWAREHOUSE2_H_INCLUDED
main.cpp
#include <iostream>
#include "LipstickWarehouse2.h"
using namespace std;
int main()
{
Lipstick FavBrand;
FavBrand.Brand = Mac;
FavBrand.Color = red;
FavBrand.Formula = matte;
FavBrand.Tube = black;
FavBrand.Price = 19.00;
FavBrand.Rating = 5;
Lipstick WorBrand;
WorBrand.Brand = Glossier;
WorBrand.Color = other;
WorBrand.Formula = sheer;
WorBrand.Tube = other;
WorBrand.Price = 18.00;
WorBrand.Rating = 3;
cout << "Buyer: Should I buy the " << FavBrand.Brand << FavBrand.Color << FavBrand.Formula << "lipstick?" << endl;
cout << "Seller: " << FavBrand.reccomendation << endl;
cout << "Buyer: Should I buy the " << WorBrand.Brand << WorBrand.Color << WorBrand.Formula << "lipstick?" << endl;
cout << "Seller: " << WorBrand.reccomendation << endl;
return 0;
}
Ошибки
Line 9: No member named 'Brand' in 'Lipstick'
Line 10: No member named 'Color' in 'Lipstick'
Line 11: No member named 'Formula' in 'Lipstick'
Line 17: No member named 'Brand' in 'Lipstick'
Line 18: No member named 'Color' in 'Lipstick'
Line 19: No member named 'Formula' in 'Lipstick'
Line 24: No member named 'Brand' in 'Lipstick'
Line 24: No member named 'Color' in 'Lipstick'
Line 24: No member named 'Formula' in 'Lipstick'
Line 24: Reference to non-static member function must be called
Line 26: No member named 'Brand' in 'Lipstick'
Line 26: No member named 'Color' in 'Lipstick'
Line 26: No member named 'Formula' in 'Lipstick'
Line 27: Reference to non-static member function must be called
Папка проекта
*Изд. Примечание: «.cbp» не является опечаткой. См. См. Исходный файл изображения)
> bin
LipstickWarehouse2.cbp
LipstickWarehouse2.h
main.cpp
> obj
Комментарии:
1. Пожалуйста, опубликуйте свой код в виде текста, а не изображений. Для людей, которые по той или иной причине не могут видеть изображения, ваш вопрос остается без ответа.
2. В качестве общего руководства по стилю полезно, если ваша заглавная буква различает типы и значения. Поэтому, если имена ваших классов и функций начинаются с заглавной буквы, подумайте о том, чтобы имена переменных начинались как минимум со строчной буквы.
3. Что, черт возьми, такое файл «.cbp»?
4. Проект @Casey CodeBlocks?
5. @PaulSanders Ну, это совсем не будет путаницей между .cpp и .cbp крошечным шрифтом.
Ответ №1:
Ошибка появляется из-за того, что вы пытаетесь получить доступ к членам класса по их типам (марка, цвет и т.д.) Вместо имен (Имя, цвет губ, …)
Измените свой код в main() следующим образом:
Lipstick FavBrand;
FavBrand.Name = Mac;
...
Ответ №2:
class Lipstick
{
public:
Brand Name;
Color LipColor;
Color Tube;
Formula Effect;
float Price;
int Rating;
};
Здесь вы объявляете элемент с именем Name
, который имеет тип Brand
. Чтобы получить доступ к этому, вам нужно сделать
Lipstick FavBrand;
FavBrand.Name = Mac;
Обратите внимание, что мы используем Name
здесь вместо Brand
«потому Name
что» имя члена, тогда Brand
как это его тип. Для доступа ко всем другим участникам необходимо использовать их имена, а не их типы.