Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/20: Рейтинг темы: голосов - 20, средняя оценка - 4.60
NovGosh
3 / 1 / 0
Регистрация: 11.01.2012
Сообщений: 25
#1

Не видит класса string

09.06.2012, 20:26. Просмотров 3622. Ответов 10
Метки нет (Все метки)

Вопрос чисто технический: в VisualStudio 2010 создал тестовый проект. В нём создал файл Class1.h, в нём текст:
C++
1
2
3
4
5
6
7
8
9
#pragma once
 
#include <string>
 
class Class1
{
public:
    string val;
};
Проект не компилируется с ошибками:
1>g:\main\industrialprograming\visual studio\projects\testproject\testproject\test.h(12): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "s"
1>g:\main\industrialprograming\visual studio\projects\testproject\testproject\test.h(12): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>g:\main\industrialprograming\visual studio\projects\testproject\testproject\test.h(12): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию

Прошу подсказать, в чём дело? Это я что-то в настройках сбил?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 20:26
Ответы с готовыми решениями:

Visual studio не видит метод класса String
Для программы понадобился метод Contanins класса string, когда пишу его в...

Почему объект производного класса не видит префиксный оператор из базового класса?
Короче создал я базовый класс с перегруженным префиксным оператором ++. Потом...

С++, delete в деструкторе класса не видит переменные, создаваемые new в конструкторе класса
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &quot;math.h&quot; using namespace...

Конструктор класса не видит конструктор по умолчанию другого класса
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса...

Использование класса String
//Èñïîëüçîâàíèå êëàññà string. #include &lt;iostream&gt; #include &lt;string.h&gt; ...

10
rofl113
10 / 10 / 2
Регистрация: 26.02.2012
Сообщений: 36
09.06.2012, 20:32 #2
Все очень просто.
Файл.h - это заголовочный файл - там описываются все переменные и функции (в краткой форме - тобишь объявляются к какому типу они пренадлежат.)

Файл.cpp - файл испольнительные - там уже описывается чему равна каждая переменная и что делают функции.

У тебя нет второго файла вот и не работает.)

Если тебе нужно именно это скомпилировать - хотя ничего ты не увидишь в конце компиляции, то просто создай отдельно cpp файл и впиши туда все это.

Кстати cpp отдельно может существовать и прекрасно компилируется .) (могу ошибаться не ругайте больно)
0
Polikarpic
46 / 46 / 12
Регистрация: 29.06.2011
Сообщений: 174
09.06.2012, 20:33 #3
Лучше было бы юзать:
C++
1
2
3
4
5
6
7
8
9
10
#pragma once
 
#ifndef _(CLASS_H) // собственно зависит от имени заголовочного файла
#define _(CLASS_H)
 
/*
ваш класс
*/
 
#endif _(CLASS_H)
я все заголовочники так оформляю - в Visual C++ работает
1
NovGosh
3 / 1 / 0
Регистрация: 11.01.2012
Сообщений: 25
09.06.2012, 20:58  [ТС] #4
нет, вы не понял, у меня есть и главный файл - main.cpp, и файл test.cpp, в котором буду описаны методы и функции класса Class1 (которых пока что нету). Оформление пробовал поменять, но проблему это не решило. Мне просто не нравятся ошибки - вроде, если бы он не знал, что такое string, то он бы так и писал - не объявленный идентификатор. А тут чего то не то пишет
0
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
09.06.2012, 21:04 #5
Цитата Сообщение от NovGosh Посмотреть сообщение
нет, вы не понял, у меня есть и главный файл - main.cpp, и файл test.cpp, в котором буду описаны методы и функции класса Class1 (которых пока что нету). Оформление пробовал поменять, но проблему это не решило. Мне просто не нравятся ошибки - вроде, если бы он не знал, что такое string, то он бы так и писал - не объявленный идентификатор. А тут чего то не то пишет
string спрятан в пространстве имен std. std::string спасут тебя, юный падаван.
3
g-h
67 / 67 / 18
Регистрация: 03.06.2012
Сообщений: 176
09.06.2012, 21:14 #6
Может просто добавить using namespace std; ?
Вопрос. А вы никакие программы до этого не устанавливали? Может быть все дело в обновлениях?
Я тут недавно себе ставил Embarcadero RAD Studio, так после этого Visual Studio просто перестал нормально работать!
1
Infinity3000
1060 / 579 / 87
Регистрация: 03.12.2009
Сообщений: 1,255
09.06.2012, 21:21 #7
C++
1
2
3
4
5
6
7
#include <string>
 
class Class1
{
public:
    std::string val;
};
1
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
09.06.2012, 21:23 #8
Цитата Сообщение от g-h Посмотреть сообщение
Может просто добавить using namespace std; ?
Если планируется в будущем писать что-то большее, чем школьные задачки, то от этой привычки надо избавляться. Коллизии имен штука неприятная. И категорически нельзя писать это в основном пространстве .h-файла.
1
NovGosh
3 / 1 / 0
Регистрация: 11.01.2012
Сообщений: 25
09.06.2012, 21:32  [ТС] #9
Спасибо огромное, с непривычки позабыл совсем. Ещё раз спасибо)
1
g-h
67 / 67 / 18
Регистрация: 03.06.2012
Сообщений: 176
09.06.2012, 21:41 #10
Тебе тоже спасибо за вопрос! Теперь буду знать если такое у меня случится

Добавлено через 2 минуты
Цитата Сообщение от Jtalk Посмотреть сообщение
Если планируется в будущем писать что-то большее, чем школьные задачки, то от этой привычки надо избавляться. Коллизии имен штука неприятная. И категорически нельзя писать это в основном пространстве .h-файла.
Это в будущем. А сейчас каждый раз писать std:string; std:cout; std:cin; То это просто неудобно.
0
Jtalk
95 / 81 / 3
Регистрация: 13.05.2011
Сообщений: 279
09.06.2012, 21:47 #11
Цитата Сообщение от g-h Посмотреть сообщение
Тебе тоже спасибо за вопрос! Теперь буду знать если такое у меня случится

Добавлено через 2 минуты

Это в будущем. А сейчас каждый раз писать std:string; std:cout; std:cin; То это просто неудобно.
using std::string;

Хотя, для школьных задач да, можно и using namespace.
0
09.06.2012, 21:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2012, 21:47

Реализация класса String
Доброго времени суток! Пишу свой класс String (учусь). И возник вопрос по...

Наследование класса String
Начал осваивать ООП С++ и решил в виде практики добавить в класс #include...

Перегрузка операторов класса String
Срочно нужна помощь. Реализовать класс String для работы со строками символов....


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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