С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
#1

Ошибка C2061 ( в классах) - C++

25.12.2013, 18:32. Просмотров 337. Ответов 8
Метки нет (Все метки)

Помогите, пожалуйста, исправить ошибку:
в .cpp файле подключен Desk.h , но функция не хочет принимать переменную типа Desk (в Entity.h )
(ошибка C2061: синтаксическая ошибка: идентификатор Desk)
//.cpp
C++
1
2
3
4
5
6
7
8
9
10
#include "stdafx.h"
#include "Desk.h"
#include "Entity.h"
 
int EntityX,EntityY,eType;
void Entity::Go(Desk *DeskPoint, int x, int y){
        DeskPoint->desk[EntityX][EntityY]=-1;// стираем
        DeskPoint->desk[x][y]=eType; //записываем
        EntityX=x; EntityY=y; //присваиваем новые координаты
    }
//.h

C++
1
2
3
4
5
6
7
8
class Entity
{
public:
    int EntityX,EntityY,eType;
    void Go(Desk *DeskPoint,int x,int y);  
private:
    void attack();
};
Как можно это исправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2013, 18:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка C2061 ( в классах) (C++):

Выскакивает ошибка C2061 - C++
Вылетает ошибка C2061 синтаксическая ошибка: идентификатор...

error C2061: синтаксическая ошибка: идентификатор - C++
Вот такая ошибка: error C2061: синтаксическая ошибка: идентификатор using namespace std;...

C2061 ошибка, не могу понять что не так - C++
Заголовочный файл: Forces.h #ifndef _FORCES_ #define _FORCES_ #include "ParticleSystem.h" // Абстрактный класс силы class...

Вылетает ошибка error C2061: синтаксическая ошибка: идентификатор "_TCHAR" - C++
Программа по обходу в глубину графа. вылетает error C2061: синтаксическая ошибка: идентификатор "_TCHAR". что с этим делать? //...

error C2061: синтаксическая ошибка: идентификатор "x" - C++
// Laboratornaa.cpp: определяет точку входа для консольного приложения. // #include"stdafx.h" #include<iostream> ...

Ошибка в классах - C++
Пишет ошибку error C2259: Matrix: невозможно создать экземпляр абстрактного класса Что это значит? выкладываю код в котором...

8
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,010
Завершенные тесты: 1
25.12.2013, 18:42 #2
В Entity.h добавить
C++
1
#include "Desk.h"
0
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
25.12.2013, 19:02  [ТС] #3
Цитата Сообщение от zss Посмотреть сообщение
В Entity.h добавить
C++
1
#include "Desk.h"
Это не помогло
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,010
Завершенные тесты: 1
25.12.2013, 19:12 #4
Тогда выкладывайте код Desk.h
0
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
25.12.2013, 19:18  [ТС] #5
Цитата Сообщение от zss Посмотреть сообщение
Тогда выкладывайте код Desk.h
Хорошо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Desk
{
public:
    Desk(int x, int y); 
    char *intro;
    int itemCounter,Bag[5],desk[10][20];
    void printDesk();
    void printmenu();
    void setTrap(int x, int y, char Trap[5]);
private:
    int X,Y,doorFree,doorClosed,Hor,Ver,UL,UR,DR,DL;
    void makeBrackets(); //создание границ
    int printBag(int lineNumber);
};
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,010
Завершенные тесты: 1
25.12.2013, 21:07 #6
Не могу представить, чтобы это не компилировалось.
Вот такой код у меня компилируется без проблем:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Desk
{
public:
    Desk(int x, int y); 
    char *intro;
    int itemCounter,Bag[5],desk[10][20];
    void printDesk();
    void printmenu();
    void setTrap(int x, int y, char Trap[5]);
private:
    int X,Y,doorFree,doorClosed,Hor,Ver,UL,UR,DR,DL;
    void makeBrackets(); //создание границ
    int printBag(int lineNumber);
};
class Entity
{
public:
    int EntityX,EntityY,eType;
    void Go(Desk *DeskPoint,int x,int y);  
private:
    void attack();
};
int EntityX,EntityY,eType;
void Entity::Go(Desk *DeskPoint, int x, int y){
        DeskPoint->desk[EntityX][EntityY]=-1;// стираем
        DeskPoint->desk[x][y]=eType; //записываем
        EntityX=x; EntityY=y; //присваиваем новые координаты
    }
0
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
25.12.2013, 21:17  [ТС] #7
zss,
просто дело в том, что мне нужно именно убрать классы в отдельные файлы (.cpp)
когда всё в одном cpp у меня тоже работает.
может, тут как-то по-другому надо сделать, чтобы класс entity мог работать с переменной типа Desk (или её указателем)?
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,010
Завершенные тесты: 1
25.12.2013, 21:21 #8
С отдельными Entity.h и Desk.h тоже компилируется.
C++
1
2
3
4
5
6
7
8
class Entity
{
public:
    int EntityX,EntityY,eType;
    void Go(Desk *DeskPoint,int x,int y);  
private:
    void attack();
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Desk
{
public:
    Desk(int x, int y); 
    char *intro;
    int itemCounter,Bag[5],desk[10][20];
    void printDesk();
    void printmenu();
    void setTrap(int x, int y, char Trap[5]);
private:
    int X,Y,doorFree,doorClosed,Hor,Ver,UL,UR,DR,DL;
    void makeBrackets(); //создание границ
    int printBag(int lineNumber);
};
C++
1
2
3
4
5
6
7
8
#include "Desk.h"
#include "Entity.h"
int EntityX,EntityY,eType;
void Entity::Go(Desk *DeskPoint, int x, int y){
        DeskPoint->desk[EntityX][EntityY]=-1;// стираем
        DeskPoint->desk[x][y]=eType; //записываем
        EntityX=x; EntityY=y; //присваиваем новые координаты
    }
Все ОК.
0
Jer
0 / 0 / 0
Регистрация: 14.12.2013
Сообщений: 28
25.12.2013, 21:29  [ТС] #9
Цитата Сообщение от zss Посмотреть сообщение
С отдельными Entity.h и Desk.h тоже компилируется.
C++
1
2
3
4
5
6
7
8
class Entity
{
public:
    int EntityX,EntityY,eType;
    void Go(Desk *DeskPoint,int x,int y);  
private:
    void attack();
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Desk
{
public:
    Desk(int x, int y); 
    char *intro;
    int itemCounter,Bag[5],desk[10][20];
    void printDesk();
    void printmenu();
    void setTrap(int x, int y, char Trap[5]);
private:
    int X,Y,doorFree,doorClosed,Hor,Ver,UL,UR,DR,DL;
    void makeBrackets(); //создание границ
    int printBag(int lineNumber);
};
C++
1
2
3
4
5
6
7
8
#include "Desk.h"
#include "Entity.h"
int EntityX,EntityY,eType;
void Entity::Go(Desk *DeskPoint, int x, int y){
        DeskPoint->desk[EntityX][EntityY]=-1;// стираем
        DeskPoint->desk[x][y]=eType; //записываем
        EntityX=x; EntityY=y; //присваиваем новые координаты
    }
Все ОК.
Значит, у меня что-то с компилятором. Плохо сегодня работает.
Спасибо!
0
25.12.2013, 21:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 21:29
Привет! Вот еще темы с ответами:

Ошибка в классах - C++
Добрый день! Мне необходимо разбить 1 класс на 2: базовый и производный! Я вроде сделал, но вылезает ошибка, что нехватает фигурной...

Ошибка в классах - C++
Подскажите что нужно сделать, что бы конструктор видел класс Cex(Цех) Перепишите текст программы и сообщений об ошибках непосредственно в...

error C2061 - C++
Помогите найти ошибку: #include "stdafx.h" #include <string> #include <tchar.h> #include <iostream> int _tmain(int argc,...

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе - C++
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.