Написал вот такой код(ниже), а на 12 строке выдает ошибку "Ошибка C2061 синтаксическая ошибка: идентификатор "inv""
Own C:\Users\mars3\source\repos\Own\Own\Source.cpp 12
Обьясните пожалуйста что не так и как ее решить. Спасибо!
12 строка: void Buy(const own& product, inv &p)
#include
#include
using namespace std;
class own;
class me
{
public:
void Buy(const own& product, inv &p)
{
}
private:
string name = "Noname";
int money = 1000;
};
class inv
{
public:
void sorting()
{
}
private:
int pc = 0;
};
class own
{
public:
string GetName()
{
return name;
}
int GetPrice()
{
return price;
}
private:
string name = "Noname";
int price = 0;
};
int main()
{
return 0;
}
Когда допишешь код для использования этих функций в классах - получишь еще кучу ошибок ) Заодно узнаешь что иногда реализацию нужно выносить из класса а методы для получения чего-либо (геттеры) нужно делать с гарантией константности.
не люблю с++
где то скобки закрыты не правильно.
На такое поменяй
class own;
class inv;
class me
Проблема заключается в том, что при объявлении функции `Buy` в классе `me`, компилятор еще не знает о существовании класса `inv`, потому что его объявление идет позже. Когда компилятор просматривает код сверху вниз, он не может распознать `inv` как тип данных, поскольку `inv` еще не было объявлено на момент, когда встречается в `Buy`.
Решение этой проблемы включает перемещение объявления класса `inv` до объявления класса `me`.
Ваш код будет выглядеть так:
```cpp
#include <iostream>
#include <string>
using namespace std;
class own;
class inv; // forward declaration
class inv
{
public:
void sorting()
{
}
private:
int pc = 0;
};
class me
{
public:
void Buy(const own& product, inv &p)
{
}
private:
string name = "Noname";
int money = 1000;
};
class own
{
public:
string GetName()
{
return name;
}
int GetPrice()
{
return price;
}
private:
string name = "Noname";
int price = 0;
};
int main()
{
return 0;
}
```
Таким образом, когда компилятор встречает функцию `Buy`, он уже знает о существовании класса `inv` и может распознать его как тип данных. Это называется "предварительное объявление" или "forward declaration".
Да и скобок везде хватает