Форум программистов, компьютерный форум CyberForum.ru

Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" - C++

Восстановить пароль Регистрация
 
powerglory
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 16
03.08.2011, 13:43     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #1
Что я сделал не правильно?

C++
1
2
3
4
5
6
typedef struct ElementsList
{
    struct ElementsList *Prev;
    struct ElementsList *Next;
    TiXmlElement *Cur;
} ElementsList;
Выдает ошибку:
1>c:\users\powerglory\documents\visual studio 2010\projects\wininet\spaces\getting.h(4): error C2011: ElementsList: переопределение типа "struct"
1> c:\users\powerglory\documents\visual studio 2010\projects\wininet\spaces\getting.h(4): см. объявление "ElementsList"

Среда: MSVC++2010
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2011, 13:43     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct"
Посмотрите здесь:

C++ error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
Класс типа двусвязный список C++
C++ Ошибка "error C2011: переопределение типа"
error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) C++
error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
03.08.2011, 13:51     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #2
C++
1
2
3
4
5
6
typedef struct
 {
 struct ElementsList *Prev;
 struct ElementsList *Next;
 TiXmlElement *Cur;
 } ElementsList;
powerglory
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 16
03.08.2011, 13:55  [ТС]     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #3
не помогает, то же самое
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
03.08.2011, 13:56     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #4
где-то раньше объявлен такой тип.
powerglory
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 16
03.08.2011, 13:59  [ТС]     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #5
Цитата Сообщение от OstapBender Посмотреть сообщение
где-то раньше объявлен такой тип.
нет, не объявлен, я пробовал другие имена - то же самое
LosAngeles
Заблокирован
03.08.2011, 14:03     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #6
ну может ты до этого определял структуру или ещё какую фигню после которой надо бы ; поставить но забыл?
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
03.08.2011, 14:04     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #7
код всего проекта ...
powerglory
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 16
03.08.2011, 14:35  [ТС]     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #8
C++
1
2
3
4
5
//getting.cpp 
#include "stdafx.h"
 
 
#include "getting.h"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// spaces.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet")
 
#include <stdlib.h>
#include <fstream>
#include <iostream>
 
#include "getting.h"
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{}
C++
1
2
3
4
5
6
7
8
9
//getting.h
typedef struct ElementsList{
    int p; 
    TiXmlElement *Cur;
    struct ElementsList* Prev;
    struct ElementsList* Next;   
} ElementsList;
 
 extern ElementsList *ElCreate(TiXmlElement*);
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//
 
#pragma once
 
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
 
 
 
// TODO: Установите здесь ссылки на дополнительные заголовки, требующиеся для программы
 
#include "tinyxml.h"
Добавлено через 1 минуту
Теперь выдает ошибки линковщика...
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
03.08.2011, 15:13     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #9
Вот нафига на С++ писать в стиле Си? Зачем typedef? Зачем struct перед определением полей?

По делу на тебя ругается компилятор, ты структуру дважды (минимум) определяешь. #pragma once для кого придумано? Или #ifdef #endif хотя бы...
powerglory
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 16
03.08.2011, 15:30  [ТС]     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #10
Подскажите, пожалуйста как правильно подключить getting.cpp к проекту
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
03.08.2011, 15:36     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #11
Двусвязный список - Error C2011: ElementsList: переопределение типа "struct"
там выберешь .cpp файл.

добавь в хедер инклюд гварды.
http://ru.wikipedia.org/wiki/Include_guard

 Комментарий модератора 
Прикрепляйте картинки к сообщениям.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
03.08.2011, 15:47     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #12
Во первых. В файле //getting.h в самом начале напиши #pragma once
Во вторых. Файл getting.срр подключается так же, как и все остальные.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2011, 20:00     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct"
Еще ссылки по теме:

Error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) C++
C++ Компилятор выдаёт ошибку: error C2011: Confection::Date: переопределение типа "struct". Как исправить?
C++ C2011 переопределение типа "enum" RFMapTool c:\dxsdk\include\d3d8types.h

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

Или воспользуйтесь поиском по форуму:
Сыроежка
Заблокирован
03.08.2011, 20:00     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct" #13
Чтобы было понятно, в чем проблема, то попробуйте написать код

C++
1
ElementsList s;
и компилятор запутается, не зная, то ли это имя структуры, то ли это имя , определенное с помощью typedef. Это на самом деле проблема только С++. В С такой проблемы нет, так как перед именем структуры в объявление переменной данного типа нужно указывать ключевое слово struct.

Поэтому если это у вас код С++, то надо сделать имя структуры и имя typedef различными. Например

C++
1
2
3
4
5
6
typedef struct tagElementsList
{
    tagElementsList *Prev;
    tagElementsList *Next;
    TiXmlElement *Cur;
} ElementsList;
и должно все компилироваться.

Либо у вас возникла витуация, что вы код С пытаетесь скомпилировать компилятором для проекта С++. В этом случае нужно заставить компилятор компилировать ваш модуль как С-модуль, и тогда ваш исходный код будет компилироваться без изменений.
Yandex
Объявления
03.08.2011, 20:00     Двусвязный список - Error C2011: ElementsList: переопределение типа "struct"
Ответ Создать тему
Опции темы

Текущее время: 00:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru