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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2011, 10:51   #1
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
Вопрос 'String' does not name a type...

Всем привет!!!

Есть файл "main.cpp".
Код:
#include <cstdlib>
#include <iostream>
#include <string>
#include <fstream>

#include "convert.h"
using namespace std;

string Adition (string num1, string num2);

main ()
{
   string str; /* the numbers from the array */ 
   string array [74][9]; /* the array */

.............................

   string binary1 = ConvHB(array[0][1]);
   string binary2 = ConvHB(array[1][1]);
......
return 0;

.............................


есть файл "convert.h"
Код:
String ConvBH (String hex);

String ConvHB (String binary);
а также есть "convert.cpp"
Код:
#include "convert.h"

/* converting hexadecimal to binary */
String ConvHB(String hex)
{
   String binary;
   String num;
   
   cout << endl;
   
   int length = hex.length();
         
   for (int i=0; i<length; i=i+1)
   {
      String str(hex,i,1);
      if (str == "0")
         { num = "0000"; }
      else if (str == "1")
         { num = "0001"; }
      else if (str == "2")
         { num = "0010"; }
      else if (str == "3")
         { num = "0011"; }
      else if (str == "4")
         { num = "0100"; }
      else if (str == "5")
         { num = "0101"; }
      else if (str == "6")
         { num = "0110"; }
      else if (str == "7")
         { num = "0111"; }
      else if (str == "8")
         { num = "1000"; }
      else if (str == "9")
         { num = "1001"; }
      else if (str == "A")
         { num = "1010"; }
      else if (str == "B")
         { num = "1011"; }
      else if (str == "C")
         { num = "1100"; }
      else if (str == "D")
         { num = "1101"; }
      else if (str == "E")
         { num = "1110"; }
      else if (str == "F")
         { num = "1111"; }
      else 
         { cout << "Wrong hexadecimal number...check it and try again."<< endl;
           cout << "Ignore the result if existed..."<< endl;
           break; 
         }
      binary = binary + num; 
   }
   cout << endl;
   cout << hex << " in hexadecimal, is equal to " << binary << " in binary." << endl;
 
 system ("PAUSE");
 return binary;
}


/* converting binary to hexadecimal */
string ConvBH (string binary)
{
   string hex;
   string num;
      
   int length = binary.length();
   
   if ( length % 4 !=0 )
   {
     int i = 4-(length%4);
     for (int n=0; n<i; n++)
     { binary = "0" + binary; }
   }
      
   for (int i=0; i<length; i=i+4)
   {
      string str(binary,i,4);
      if (str == "0000")
         { num = "0"; }
      else if (str == "0001")
         { num = "1"; }
      else if (str == "0010")
         { num = "2"; }
      else if (str == "0011")
         { num = "3"; }
      else if (str == "0100")
         { num = "4"; }
      else if (str == "0101")
         { num = "5"; }
      else if (str == "0110")
         { num = "6"; }
      else if (str == "0111")
         { num = "7"; }
      else if (str == "1000")
         { num = "8"; }
      else if (str == "1001")
         { num = "9"; }
      else if (str == "1010")
         { num = "A"; }
      else if (str == "1011")
         { num = "B"; }
      else if (str == "1100")
         { num = "C"; }
      else if (str == "1101")
         { num = "D"; }
      else if (str == "1110")
         { num = "E"; }
      else
         { num = "F"; }
      hex = hex + num; 
   }
   cout << endl;
   
   string str(hex,0,1);
   if (str == "0")
   { hex.erase(0,1); }
   
   cout << binary << " in binary, is equal to " << hex << " in hexadecimal." << endl << endl;
 
 return hex;
}
Функции конвертируют бинарные числа в хексадесимальные - и обратно...

Проблема состоит в том что, что когда я запускаю главную программу, то он мне дает ошибку в файле conv.h. И пишет "'String' does not name a type".
Программа работала пока все функции находились в одном файле. Но как только я их разделил на 2 файла то появилась эта ошибка.

Подскажите что я не так прописал???
Зарание спасибо!!!

Последний раз редактировалось Stilet; 30.03.2011 в 11:42.
KoctR вне форума Ответить с цитированием
Старый 30.03.2011, 11:26   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Похоже компилятор не видит эту переменную

string Adition (string num1, string num2);

Попробуйте объявить её в .cpp файле.
В нём же объявите
#include <string>.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 30.03.2011, 11:32   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

он и не должен видеть переменную типа String, класс то string
помним что С++ регистрозависимый.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.03.2011, 11:35   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
он и не должен видеть переменную типа String, класс то string
помним что С++ регистрозависимый.
Да, да, точно, а я чёт проглядел
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 30.03.2011, 13:40   #5
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
Печаль

"string Adition(string num1, string num2)" - это отдельная функция прописанная в главном фале "main.cpp". Компилятор же выдает ошибки по двум другим: "string ConvHB(string hex)" и "string ConvBH(string bin)". Причем при этом он ссылается не на исходник а на convert.h.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
он и не должен видеть переменную типа String, класс то string
помним что С++ регистрозависимый.
И вот кстати, я изменил string на String, проблема не решилась. А наоборот компилятор выдал целую кучу ошибок, причем все были связанны с переменными типа String. Везде писал "Undeclared variable".

Но вот странная штука, ведь когда эти две функции находились в главном файле main.cpp программа работала, а как только разделил, нет...
KoctR вне форума Ответить с цитированием
Старый 30.03.2011, 14:58   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вообще то наоборот, String смените на string
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.03.2011, 15:48   #7
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
По умолчанию

ну так вот и сделано - но проблема осталась...

Есть еще идеи??? ))

Вот кстати я препода спрашивал - он сказал что это копилятор может капризничать, и посоветовал скачать Eclipse для С++...

Я использую Dev-C++ 4.9.9.2 - но так как я в компиляторах и средах программирования не разбираюсь, я не настраивал ничего. Может это именно из за этого???

Последний раз редактировалось Stilet; 30.03.2011 в 17:36.
KoctR вне форума Ответить с цитированием
Старый 30.03.2011, 21:49   #8
blacktener
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 78
По умолчанию хммм

ты позаменял везде String на string?
blacktener вне форума Ответить с цитированием
Старый 31.03.2011, 11:34   #9
KoctR
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 16
По умолчанию

ну да. Абсолютно везде - только что перепроверил
KoctR вне форума Ответить с цитированием
Старый 31.03.2011, 12:12   #10
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Скиньте сюда изправленный вариант и тексты ошибок с указанием, в каких строках они возникают.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Could not convert variant of type (Olestr) into type (Double) java_91 Общие вопросы Delphi 1 18.02.2011 18:46
The type name 'GreenShalControl' does not exist in the type Beton_net WPF, UWP, WinRT, XAML 0 15.02.2011 11:24
Could not convert variant of type (UnicodeString) into type (Double) postaveche БД в Delphi 11 13.12.2010 16:41
Различие смысла в type "type" Alex Cones Общие вопросы Delphi 5 18.04.2010 23:57
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57