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

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

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

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

03.08.2011, 13:43. Просмотров 765. Ответов 12
Метки нет (Все метки)

Что я сделал не правильно?

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"
Посмотрите здесь:

Компилятор выдаёт ошибку: error C2011: Confection::Date: переопределение типа "struct". Как исправить? - C++
#pragma once #pragma warning #ifndef Confection_H #define Confection_H #include <string> #include "Filling.h" using namespace...

Ошибка "error C2011: переопределение типа" - C++
struct Tunit { public : int team; int team_agricultural; POINT location; POINT moveLocation; float max_helf; ...

C2011 переопределение типа "enum" RFMapTool c:\dxsdk\include\d3d8types.h - C++
Серьезность Код Описание Проект Файл Строка Состояние подавления Ошибка C2011 _D3DZBUFFERTYPE: переопределение типа...

visual studio 2012 - ошибка "переопределение типа" - C++
имею head.h #include <stdio.h> #include <iostream> #include <Windows.h> #pragma comment(lib, "ws2_32") using namespace...

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

Написать конструктор для пользовательского класса "Двусвязный список" - C++
Попытался построить двусвязный список. Как написать этот конструктор ? Может быть правильно будет определить функцию push_back и каждый раз...

Реализовать указанные функции-члены для пользовательского класса "Кольцевой двусвязный список" - C++
Сообственно сабж. У списка два закрытых поля: tail-это узел следующий за "последним"(условно,ибо список -кольцо. в tail-е лежит мусор)...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
583 / 521 / 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
583 / 521 / 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++
1286 / 1220 / 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
583 / 521 / 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++
1286 / 1220 / 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"
Еще ссылки по теме:

Как переделать эту прогу в шаблон классов "Двусвязный список" произвольных элементов - C++
#include &lt;iostream.h&gt; #include &lt;stdlib.h&gt;2 #include &lt;conio.h&gt; using namespace std; struct Element { public: double...

Реализовать класс "Книжный магазин", используя двусвязный список (ошибка с покупкой книги) - C++
Доброго времени суток,мне нужно реализовать класс BookShop используя двусязный список,все методы работают,кроме buyBook,его нужно...

переопределение типа "class" - C++
У меня такая ошибка возникает: переопределение типа &quot;class&quot; Знаю из-зи чего, а убрать не могу: Есть файл 1.h и 1.cpp в котором...

Переопределение типа "class" - C++
Как я понял, ошибка &quot;переопределение типа &quot;class&quot;&quot; означает что класс уже был где-то объявлен, однако у меня он вроде нигде больше не...

Реализация класса "Двусвязный список" - C++
Ребята, привет! Прошу помощи... Есть вот такая задача и код:


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

Или воспользуйтесь поиском по форуму:
Сыроежка
Заблокирован
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"
Ответ Создать тему
Опции темы

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