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

Самописный класс (.cpp +.h) ошибка ambiguity between... - C++

Восстановить пароль Регистрация
 
Пацанчик
7 / 7 / 3
Регистрация: 18.05.2010
Сообщений: 26
18.05.2010, 13:52     Самописный класс (.cpp +.h) ошибка ambiguity between... #1
Я вобще почти ничего не знаю в c++, самый что нинаесть новичок, пытаюсь разобраться с классически принятой(сообществом) структурой проектов, как где что объявлять лучше, в каких файлах и т.д. Вобщем подучите, где накосячил:
файл stack.h
Код
struct point
{
  int x;
  int y;
};
class TStack
{
  public:
    point tochka;
    void push(int x, int y);
    point pop(void);
    point index(int i);
    int length(void);

  private:
    point st[];
    int len;
    int count;
    TStack();
    ~TStack();
};
файл stack.cpp приведу частично, т.к. всё аналогично первой функции...
Код
#include "stack.h"
void TStack::push(int x, int y)
{
  if ((count+1)>=len)
  {
    len = len * 2;
    sizeof(st, len);
  }
  st[count].x = x;
  st[count].y = y;
  count++;
};
...
Среда - BCB 6.0, ошибки:
Код
ambiguity between 'TStack' and 'Contnrs::TStack';
вобщем-то еще в файле много функций и при подобном обращении к ним
Код
void TStack::push(int x, int y)
вылазит такая ошибка.
Научите как правильно и, если что-то делаю не совсем так, как "принято", то подскажите, может какие директивы забыл или еще что...
Да, и вот еще что - хочу потом подключить всё это дело в обычный проект с формой, как корректно это сделать, в unit1.h подключать stack.cpp или в unit1.cpp?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
18.05.2010, 13:58     Самописный класс (.cpp +.h) ошибка ambiguity between... #2
где то в библиотечных файлах уже есть определение TStack, назови свой класс по другому и будет счастье
Пацанчик
7 / 7 / 3
Регистрация: 18.05.2010
Сообщений: 26
18.05.2010, 14:23  [ТС]     Самописный класс (.cpp +.h) ошибка ambiguity between... #3
Действительно, TMyStack везде прокатило, Спасибо! А я ломаю голову что не так - и так и эдак пробовать начал (думал в директивах дело, всякие #ifdef #endif и т.д. уже пытаюсь заюзать, но выходит лишь всё хуже... ). Всётки после дельфи непривычно - вроде всё похоже и в тоже время мелочей всяких полно (навроде того что тут нет типа point и приходится как структуру его вводить и т.д.). К проекту подключил mystack.cpp в unit1.h, вроде ошибок нет.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.05.2010, 14:57     Самописный класс (.cpp +.h) ошибка ambiguity between... #4
Цитата Сообщение от Пацанчик Посмотреть сообщение
думал в директивах дело, всякие #ifdef #endif и т.д. уже пытаюсь заюзать, но выходит лишь всё хуже...
Советую всё-таки "заюзать".
Цитата Сообщение от oxotnik Посмотреть сообщение
где то в библиотечных файлах уже есть определение TStack, назови свой класс по другому и будет счастье
А пространства имён для кого придумали?
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
18.05.2010, 15:16     Самописный класс (.cpp +.h) ошибка ambiguity between... #5
Цитата Сообщение от rangerx Посмотреть сообщение
А пространства имён для кого придумали?
Я сначала тоже про них хотел написать, но подумал, что слишком сложно будет объяснить (много писать придется), а с переименованием объекта все траблы решаются быстрей.
Пацанчик
7 / 7 / 3
Регистрация: 18.05.2010
Сообщений: 26
18.05.2010, 23:01  [ТС]     Самописный класс (.cpp +.h) ошибка ambiguity between... #6
Наступил еще на 1 грабли Хотел создать экземпляр класса майстек и потом присвоить ему новый экземпляр тогоже класса, от функции, которая собс-но его возвращает. По незнанию что-то не так делаю...
Код
[Linker Error] Unresolved external 'TfrmMain::mkCirclePie(int)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\Erunda\MAIN.OBJ
Вижу где ошибка, но как исправить совсем запутался.
Объявление функции mkCirclePie:
Код
TMyStack* mkCirclePie(int r);
Функция mkCirclePie:
Код
TMyStack* mkCirclePie(int r)
{
  TMyStack *MyStack;
  ...
  return MyStack;
}
Событие pbOutMouseDown
Код
void __fastcall TfrmMain::pbOutMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  ...
  TMyStack *st;
  ...
  st = mkCirclePie(x);
  ...
  st = mkCirclePie(y);
  ...
}
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
18.05.2010, 23:50     Самописный класс (.cpp +.h) ошибка ambiguity between... #7
тело функции не там прописал, или не везде заголовок подключил с описанием... линкер нашел определение ф-ции а реализацию ее найти не может
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2010, 00:52     Самописный класс (.cpp +.h) ошибка ambiguity between...
Еще ссылки по теме:

шаблонный вложенный класс в .cpp C++
C++ Ошибка при использовании подключённых .h и .cpp компонентов
C++ Разделение проекта на файлы .cpp где полностью описывается один класс

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

Или воспользуйтесь поиском по форуму:
Пацанчик
7 / 7 / 3
Регистрация: 18.05.2010
Сообщений: 26
19.05.2010, 00:52  [ТС]     Самописный класс (.cpp +.h) ошибка ambiguity between... #8
ааа... точно, в реализации забыл TfrmMain:: добавить, вот он и не видал тело. А я грешил на указатель (ибо вечно его коряво использую когда надо). Спасибо
Yandex
Объявления
19.05.2010, 00:52     Самописный класс (.cpp +.h) ошибка ambiguity between...
Ответ Создать тему
Опции темы

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