Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2011, 14:38   #1
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
Вопрос передача строки в класс

описание класса находится в файле errors.h
Код:
class cErrors
{
public:
	cErrors(string &word);
	~cErrors();
	bool verification()const;
	void comparison();
	void incert();
private:
	string &itsWord;
};
При этом возникают следующие ошибки:
documents\visual studio 2008\projects\errors\errors\errors. h(4) : error C2061: syntax error : identifier 'string'
documents\visual studio 2008\projects\errors\errors\errors. h(10) : error C2143: syntax error : missing ';' before '&'
documents\visual studio 2008\projects\errors\errors\errors. h(10) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
documents\visual studio 2008\projects\errors\errors\errors. h(10) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
documents\visual studio 2008\projects\errors\errors\errors. cpp(11) : error C2511: 'cErrors::cErrors(std::string &)' : overloaded member function not found in 'cErrors'
documents\visual studio 2008\projects\errors\errors\errors. h(2) : see declaration of 'cErrors'
documents\visual studio 2008\projects\errors\errors\errors. cpp(103) : fatal error C1004: unexpected end-of-file found

Но если описание класса скопировать в файл errors.cpp где расположен основной код программы все работает.
Подключаю файл как обычно:
#include "stdafx.h"
#include "windows.h"
#include "errors.h"
#include <string>
#include <iostream>
using namespace std;
В чём может быть проблема?

Последний раз редактировалось shelest; 10.08.2011 в 14:40.
shelest вне форума Ответить с цитированием
Старый 10.08.2011, 14:41   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
#include "errors.h"
#include <string>
т.е. ваш бедный исходник должен сам телепатически догадаться, что следом за ним подключат столь желанный <string>? )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 10.08.2011, 14:42   #3
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Код:
#include "errors.h"
#include <string>
т.е. ваш бедный исходник должен сам телепатически догадаться, что следом за ним подключат столь желанный <string>? )
не помогает
shelest вне форума Ответить с цитированием
Старый 10.08.2011, 14:48   #4
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

проблема решена
shelest вне форума Ответить с цитированием
Старый 10.08.2011, 14:49   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

заведите за хороший тон делать две вещи:
1)защищать инклюдники Include-Guard'ами
нужно для того чтоб компиляция не падала при случайном повторном включении этого файла
пример(с рабочего проекта):
Код:
#pragma once
#ifndef PHOENIX_COMPILER_SCANNER
#define PHOENIX_COMPILER_SCANNER

//код

#endif  //PHOENIX_COMPILER_SCANNER
2)инклюдник должен подключать то что нужно ему(именно инклюднику, то есть те типы что есть в .h файле)
нужно чтоб ваш класс был самостоятельным, то есть если ему чтото нужно, то он сам это попросит, а не программист это должен делать до его включения.(у вас ошибка именно тут)
пример:
Код:
#include <boost\regex.hpp>
#include <list>
#include <vector>
#include "Reader.h"  //TODO: избавиться нафиг.



namespace phL
{
	namespace Compiler
	{
		class LexemType
		{
		private:
			boost::wregex reg;
			unsigned ident;
		public:
			LexemType();
			explicit LexemType(std::wstring regex,unsigned _ident);
			unsigned GetLexemIdent() const;
			const boost::wregex& GetRegex() const;
		};
тут правда пространства не закрыты, ибо обрывок кода.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 10.08.2011 в 14:51.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.08.2011, 14:51   #6
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
проблема решена
отписываться надо, в чем заключалась проблема

2Пепел Феникса
он тебе не полный хидер выложил, а отрывок
кстати
Цитата:
explicit LexemType(std::wstring regex,unsigned _ident);
зачем?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 10.08.2011 в 14:58.
pproger вне форума Ответить с цитированием
Старый 10.08.2011, 14:56   #7
shelest
Пользователь
 
Аватар для shelest
 
Регистрация: 01.11.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение


отписываться надо, в чем заключалась проблема

2Пепел Феникса
он тебе не полный хидер выложил, а отрывок
во первых как сообщалось выше порядок подключения
вначале #include <string>
потом #include <errors.h>
во вторых пространство имён
Код:
class cErrors
{
public:
	cErrors(std::string &word);
	~cErrors();
	bool verification()const;// проверка ввода
	void comparison();//сравнение по модулю L
	void incert();
private:
	std::string &itsWord;
};

Последний раз редактировалось shelest; 10.08.2011 в 14:59.
shelest вне форума Ответить с цитированием
Старый 10.08.2011, 15:00   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
зачем?
пережиток старого конструктора.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.08.2011, 16:03   #9
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
пережиток старого конструктора.
У нас в проекте тоже таких пережитков полно, я по началу сильно удивлялся, а потом додумался, что это всего лишь пережитки
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 10.08.2011, 16:31   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да в принципе не мешает, так что ладно, тем более скоро переписыватся будет:
Код:
//TODO: избавиться нафиг.
да и это забавнее помоему
(правда с учетом этого и будет переписыватся)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс строки revaldo666 Общие вопросы C/C++ 8 09.06.2011 13:48
передача внешних файлов в класс ex-libris Visual C++ 0 03.05.2011 16:42
передача типов из класса в класс badmfck Общие вопросы Delphi 10 24.05.2010 12:31
Удалить символ из строки - класс контейнер ArniLand Общие вопросы C/C++ 0 31.03.2010 20:29
Передача ссылки в функцию класса на данный класс Impuls1989 Общие вопросы C/C++ 17 09.01.2010 17:21