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

декларация в классе - C++

Восстановить пароль Регистрация
 
j_runner
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 26
17.12.2012, 05:46     декларация в классе #1
я хочу в класс добавить указатель на другой класс
и получаю следующую ошибку:
product.h:20: error: ISO C++ forbids declaration of ‘Database’ with no type
product.h:20: error: expected ‘;’ before ‘*’ token
в чем ошибка и как надо?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Product {
public:
Product();
Product(const Product&);
Product(std::string _name, int _price);
 
virtual ~Product();
std::string name;
int price;
 
[COLOR="Red"]Database* base;[/COLOR]
virtual void print();
virtual void input();
virtual void save();
virtual void load();
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2012, 05:46     декларация в классе
Посмотрите здесь:

C++ Известны оценки по физике каждого ученика двух классов.Определить средниюю оценку в каждом классе.Количество учащихся в каждом классе одинаковое!
[C++] декларация класса со статическим полем C++
Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе C++
Error: ISO C++ forbids declaration of "Link" with no type C++
Что такое forward декларация функции? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
17.12.2012, 08:21     декларация в классе #2
Синтаксических ошибок вроде нет.
Покажите больше кода. Исходники обоих классов целиком, например.
j_runner
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 26
17.12.2012, 15:13  [ТС]     декларация в классе #3
database.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <iomanip>
#include <typeinfo>
#include "product.h"
 
#ifndef __DATABASE_H_INCLUDED__
#define __DATABASE_H_INCLUDED__ 
 
class Database {
public:
   Database();
   Database(const Database&);
  
 
  virtual ~Database();
  Product* list[99];
  int i;
 void add_product(Product *_Product);
 void print_all();
 void save_to_file();
 void load_from_file();
};
#endif
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
17.12.2012, 15:54     декларация в классе #4
j_runner, я вижу перекрестную ссылку между классами.
Решение следующее.
C++
1
2
3
4
5
6
//a.h
#include "b.h"
class A
{
   B* some;
};
C++
1
2
3
4
5
6
//b.h
class A;
class B
{
   A* some;
};
C++
1
2
3
//b.cpp
#include "a.h"
#include "b.h"
Yandex
Объявления
17.12.2012, 15:54     декларация в классе
Ответ Создать тему
Опции темы

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