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

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

Восстановить пароль Регистрация
 
Casper-SC
 Аватар для Casper-SC
3465 / 1684 / 173
Регистрация: 27.03.2010
Сообщений: 4,824
Записей в блоге: 1
08.03.2011, 18:47     Не работает код. В чём причина? Как "заставить" работать? #1
Точка входа и т.д.
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++ Как принять код клавиши, а вписать саму клавишу? (Принимает "57", что означает "9")
C++ Код, приведеном в книге "С++ за 21 дней. Либерти Джесс" не работает
C++ Что означает "Программа "[4872] laba!.exe: Машинный код" завершилась с кодом 3 (0x3)."?
подскажите как заставить правильно работать программу по реализации класса "треугольник" на C++ C++
C++ Как отключить автоматическое добавление "_" "@" "number" к имени экстернального метода?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
08.03.2011, 19:06     Не работает код. В чём причина? Как "заставить" работать? #2
Объект создайте
C++
1
2
HConsole hConsole;
HConsole.Write("Привет"); //ОШИБКА №2 и 3
Casper-SC
 Аватар для Casper-SC
3465 / 1684 / 173
Регистрация: 27.03.2010
Сообщений: 4,824
Записей в блоге: 1
08.03.2011, 19:10  [ТС]     Не работает код. В чём причина? Как "заставить" работать? #3
А как нибудь по другому нельзя сделать? Чтобы объект создавался при вызове любой функции, а после уничтожался?

Добавлено через 1 минуту
Что-то не помогло. Я там статические методы использовать пытаюсь.
bigredcat
364 / 311 / 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
 Аватар для Casper-SC
3465 / 1684 / 173
Регистрация: 27.03.2010
Сообщений: 4,824
Записей в блоге: 1
08.03.2011, 19:10  [ТС]     Не работает код. В чём причина? Как "заставить" работать? #5
Что-то не помогло. Я там статические методы использовать пытаюсь.
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
08.03.2011, 19:11     Не работает код. В чём причина? Как "заставить" работать? #6
Там ошибка была
HConsole hConsole;
hConsole.Write("Привет"); //ОШИБКА №2 и 3
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.03.2011, 19:12     Не работает код. В чём причина? Как "заставить" работать? #7
к статическим так обращаются HConsole::Write("Привет");
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
08.03.2011, 19:15     Не работает код. В чём причина? Как "заставить" работать? #8
Да, я не обратил внимания про static
Casper-SC
 Аватар для Casper-SC
3465 / 1684 / 173
Регистрация: 27.03.2010
Сообщений: 4,824
Записей в блоге: 1
08.03.2011, 19:23  [ТС]     Не работает код. В чём причина? Как "заставить" работать? #9
Вообще не работает. Может посмотрите? Ни один совет не помог (не считая HConsole::Write()).
Вложения
Тип файла: rar TestCPlusPlusProject.rar (3.5 Кб, 5 просмотров)
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
08.03.2011, 19:24     Не работает код. В чём причина? Как "заставить" работать? #10
Casper-SC, пишите ошибки
Casper-SC
 Аватар для Casper-SC
3465 / 1684 / 173
Регистрация: 27.03.2010
Сообщений: 4,824
Записей в блоге: 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
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
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);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2011, 19:59     Не работает код. В чём причина? Как "заставить" работать?
Еще ссылки по теме:

В чем причина ошибки "error C2046: недопустимый вариант выбора"? C++
Перегрузка оператора "++" и "--" в чем может быть причина нарушение прав доступа? C++
C++ Как заставить код работать на x32 и x64?

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

Или воспользуйтесь поиском по форуму:
Casper-SC
 Аватар для Casper-SC
3465 / 1684 / 173
Регистрация: 27.03.2010
Сообщений: 4,824
Записей в блоге: 1
08.03.2011, 19:59  [ТС]     Не работает код. В чём причина? Как "заставить" работать? #13
В заголовке почему-то надо писать напротив каждого метода static. В результате в консоли не текст, а куча скобок и нечитабельные символы какие-то. Короче походу пока можно забыть об этом проекте. И продолжать читать книжку. А в книжке, нет рассказать мне про синтаксис и тонкости, зачем-то рассказывают историю С++ и прочую воду, аж читать не охота.
Yandex
Объявления
08.03.2011, 19:59     Не работает код. В чём причина? Как "заставить" работать?
Ответ Создать тему
Опции темы

Текущее время: 10:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru