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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2012, 14:00   #1
bambarbia
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 44
По умолчанию Как быть новечку

здравствуйте я еще нуб прошу понять, вот я пишу обычный консольный проект:
//////////////////
файл Verify.h//
//////////////////
Код:
#include "stdafx.h"
class Verify{
      Verify::Verify(){

     }
}
////////////////////
файл Verify.cpp//
////////////////////
Код:
#include "stdafx.h"
#include <iostream>
#include "conio.h"
#include "Verify.h"
Verify(){
    string str = "Это класс Verify"; //вот здесь я объявляю переменную str
}
void main(int argc, char* argv[]){
     Verify v= new Verify;  // здесь хочу услышать переменную str
     printf("%s", v.str);
}
Пожалуйста подскажите что я делаю не так
bambarbia вне форума Ответить с цитированием
Старый 17.12.2012, 14:55   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

str - локальная переменная в Verify::Verify(). Фигурная скобочка закрылась, функция кончилась, переменная сдохла. Грабли раз.
Если заголовок объявляет конструктор, объявление должно кончаться на ;, а не на {}. Это грабли два.
new возвращает указатель и здесь не нужно. Это грабли три.

Переменная-член класса должна объявляться в заголовке (потому что компилятор должен знать, сколько места занимает объект класса Verify). Вообще говоря, идею делать её public (публичной, общедоступной) сложно назвать удачной, но...
Код:
class Verify{
public: //Обозначаем: всё, что дальше, могут использовать все желающие
      Verify(void); //Объект нашего класса можно создать без параметров

      std::string str; //В объектах нашего класса есть поле str типа std::string
}; //Закончили описание класса
Код:
#include "Verify.h"
Verify::Verify(void){ //Указываем, метод какого класса реализуем
    str = "Это класс Verify"; //присваиваем полю значение
}
void main(int argc, char* argv[]){
     Verify v();  // создаём объект с помощью конструктора без параметров
     printf("%s", v.str.c_str()); //обращаемся к полю... только вот %s хочет C-строку, 
                               //которая из std::string получается вызовом c_str()
}
В общем, есть предложение почитать учебник.
Abstraction вне форума Ответить с цитированием
Старый 17.12.2012, 15:03   #3
bambarbia
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 44
По умолчанию

но я был близок к ответу, согласитесь? имею ввиду ооп подход

Последний раз редактировалось bambarbia; 17.12.2012 в 15:06.
bambarbia вне форума Ответить с цитированием
Старый 17.12.2012, 15:16   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

В смысле ООП подхода (...что бы это ни значило...), предпочтительнее объявить в классе метод description(), возвращающий const char* и убрать из public-части данные. Реализация - сделать str private-переменной и возвращать в description str.c_str(). Альтернативная реализация - обойтись вообще без переменной-члена, а в description зимой и летом возвращать "Это класс Verify". Обратите внимание, что "снаружи" класса реализации при этом будут почти неотличимы.
Abstraction вне форума Ответить с цитированием
Старый 18.12.2012, 14:19   #5
bambarbia
Пользователь
 
Регистрация: 20.10.2011
Сообщений: 44
По умолчанию

ну, вобщем спасибо за помощь Abstraction
bambarbia вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
новечку требуется помошь samers Общие вопросы C/C++ 11 04.02.2012 19:33
Регистрация на сайте журнала: быть или не быть Levsha100 Свободное общение 12 12.06.2010 00:39
Помогите новечку в Delphi Михаил70 Помощь студентам 9 24.08.2009 00:36
Помогите новечку в изучении InterBase Tarnym БД в Delphi 3 27.11.2007 18:14