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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Casper-SC
Эксперт .NET
3500 / 1719 / 177
Регистрация: 27.03.2010
Сообщений: 4,874
Записей в блоге: 1
#1

Не работает код. В чём причина? Как "заставить" работать? - C++

08.03.2011, 18:47. Просмотров 904. Ответов 12
Метки нет (Все метки)

Точка входа и т.д.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <string>
#include "HConsole.h"
 
int main()
{ 
    HConsole.Write("Привет"); //ОШИБКА №2 и 3
    system("pause");
    return 0;
}
HConsole.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
class HConsole
{
public:
    HConsole(void);
    ~HConsole(void);
 
private:
    static char* GetRusText(const char* text);
public:
    static void Write(const char* text);
};
HConsole.cpp
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 "HConsole.h"
#include <Windows.h>
#include <iostream>
 
HConsole::HConsole(void)
{
}
 
HConsole::~HConsole(void)
{
}
 
static char* GetRusText(const char* text) //функция поддержки русского языка
{
    char bufRus[256];
    CharToOem(text, bufRus);
    return bufRus; //ОШИБКА №1!!!
}
 
static void Write(const char* text)
{
    std::cout << GetRusText(text);
}
Когда пытаюсь запустить, выдаёт:
1) Предупреждение 4 warning C4172: возвращение адреса локальной или временной переменной d:\...\hconsole.cpp 22 1 TestCPlusPlusProject

2)Ошибка 1 error C2143: синтаксическая ошибка: отсутствие ";" перед "." d:\...\test.cpp 16 1 TestCPlusPlusProject

3)Ошибка 1 error C2143: синтаксическая ошибка: отсутствие ";" перед "." d:\...\test.cpp 16 1 TestCPlusPlusProject
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2011, 18:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает код. В чём причина? Как "заставить" работать? (C++):

подскажите как заставить правильно работать программу по реализации класса "треугольник" на C++ - C++
lb_1_oop_sam.h #ifndef lb_1_oop_sam_h #define lb_1_oop_sam_h //Структура &quot;треугольник&quot; class triangle { struct point ...

Перегрузка оператора "++" и "--" в чем может быть причина нарушение прав доступа? - C++
Вот такой вот код #include &lt;iostream&gt; class d { private: int size ; char *n; public: d()

Как принять код клавиши, а вписать саму клавишу? (Принимает "57", что означает "9") - C++
Нужно избавиться от такой глупости: char ch = 0; if(ch=='1')mas=1; if(ch=='2')mas=2; if(ch=='3')mas=3; ...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Как заставить код работать на x32 и x64? - C++
есть приложение C/C++ как заставить его запускаться на x64 и на x32 одновременно, нужно ли что-то в настройках компилятора менять ? или оно...

Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает - C++
Здравствуйте. Я новичок в деле программировании, так что, пожалуйста, относитесь ко мне к пониманию. Купил книгу &quot;С++ Освой самостоятельно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
bigredcat
365 / 312 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
08.03.2011, 19:06 #2
Объект создайте
C++
1
2
HConsole hConsole;
HConsole.Write("Привет"); //ОШИБКА №2 и 3
Casper-SC
Эксперт .NET
3500 / 1719 / 177
Регистрация: 27.03.2010
Сообщений: 4,874
Записей в блоге: 1
08.03.2011, 19:10  [ТС] #3
А как нибудь по другому нельзя сделать? Чтобы объект создавался при вызове любой функции, а после уничтожался?

Добавлено через 1 минуту
Что-то не помогло. Я там статические методы использовать пытаюсь.
bigredcat
365 / 312 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
08.03.2011, 19:10 #4
return bufRus; //ОШИБКА №1!!!
bufRus уже может не быть когда вы решите ей воспользоваться
например cout << GetRusText сработает, a char* p = GetRusText; cout << p; нет, т.к. bufRus уже будет уничтожена
Casper-SC
Эксперт .NET
3500 / 1719 / 177
Регистрация: 27.03.2010
Сообщений: 4,874
Записей в блоге: 1
08.03.2011, 19:10  [ТС] #5
Что-то не помогло. Я там статические методы использовать пытаюсь.
bigredcat
365 / 312 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
08.03.2011, 19:11 #6
Там ошибка была
HConsole hConsole;
hConsole.Write("Привет"); //ОШИБКА №2 и 3
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 19:12 #7
к статическим так обращаются HConsole::Write("Привет");
bigredcat
365 / 312 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
08.03.2011, 19:15 #8
Да, я не обратил внимания про static
Casper-SC
Эксперт .NET
3500 / 1719 / 177
Регистрация: 27.03.2010
Сообщений: 4,874
Записей в блоге: 1
08.03.2011, 19:23  [ТС] #9
Вообще не работает. Может посмотрите? Ни один совет не помог (не считая HConsole::Write()).
Вложения
Тип файла: rar TestCPlusPlusProject.rar (3.5 Кб, 5 просмотров)
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 19:24 #10
Casper-SC, пишите ошибки
Casper-SC
Эксперт .NET
3500 / 1719 / 177
Регистрация: 27.03.2010
Сообщений: 4,874
Записей в блоге: 1
08.03.2011, 19:28  [ТС] #11
1) Предупреждение 1 warning C4172: возвращение адреса локальной или временной переменной d:\...\hconsole.cpp 17 1 TestCPlusPlusProject

2) Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "public: static void __cdecl HConsole::Write(char const *)" (?Write@HConsole@@SAXPBD@Z) в функции _main D:...\Test.obj TestCPlusPlusProject

3) Ошибка 3 error LNK1120: 1 неразрешенных внешних элементов D:\...\TestCPlusPlusProject.exe 1 1 TestCPlusPlusProject

Текущий вид всего приложения:

Точка входа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include "HConsole.h"
#include <conio.h>
#include <Windows.h>
 
//char bufRus[256];
//
//char* RUS(const char* text) //функция поддержки русского языка
//{
//  CharToOem(text, bufRus);
//  return bufRus;
//}
 
int main()
{ 
    //printf(RUS("Выведено через printf\n"));
    HConsole::Write("Привет");
    //std::cout << RUS("Привет!!!\n");
    system("pause");
    return 0;
}


HConsole.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
#pragma once
class HConsole
{
public:
    HConsole(void);
    ~HConsole(void);
 
private:
    static char* GetRusText(const char* text);
public:
    static void Write(const char* text);
};


HConsole.cpp
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 "HConsole.h"
#include <Windows.h>
#include <iostream>
 
HConsole::HConsole(void)
{
}
 
HConsole::~HConsole(void)
{
}
 
static char* GetRusText(const char* text) //функция поддержки русского языка
{
    char bufRus[256];
    CharToOem(text, bufRus);
    return bufRus;
}
 
static void Write(const char* text)
{
    std::cout << GetRusText(text);
}
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.03.2011, 19:53 #12
Casper-SC, в cpp static писать не надо!

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
char* HConsole::GetRusText(const char* text)
{
 
}
 
void HConsole::Write(const char* text)
{
        std::cout << GetRusText(text);
}
Casper-SC
Эксперт .NET
3500 / 1719 / 177
Регистрация: 27.03.2010
Сообщений: 4,874
Записей в блоге: 1
08.03.2011, 19:59  [ТС] #13
В заголовке почему-то надо писать напротив каждого метода static. В результате в консоли не текст, а куча скобок и нечитабельные символы какие-то. Короче походу пока можно забыть об этом проекте. И продолжать читать книжку. А в книжке, нет рассказать мне про синтаксис и тонкости, зачем-то рассказывают историю С++ и прочую воду, аж читать не охота.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2011, 19:59
Привет! Вот еще темы с ответами:

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Что означает "Программа "[4872] laba!.exe: Машинный код" завершилась с кодом 3 (0x3)."? - C++
при запуске кода компилятор пишет &quot;Программа &quot; laba!!!!!!.exe: Машинный код&quot; завершилась с кодом 3 (0x3).&quot; и появляется окошечко с ошибкой....

В чем причина ошибки "error C2046: недопустимый вариант выбора"? - C++
Ошибка 1 error C2046: недопустимый вариант выбора c:\users\влад\documents\visual studio 2010\projects\dz 14.08.14\dz 14.08.14\link.cpp 45 ...

Error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции"; обнаружено "SHL" - C++
visual studio выдал такую ошибку error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в &quot;код операции&quot;; обнаружено...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.03.2011, 19:59
Ответ Создать тему
Опции темы

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