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

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.92
insideone
Модератор
Автор FAQ
3636 / 914 / 49
Регистрация: 10.01.2010
Сообщений: 2,464
#1

Автоматическое преобразование стандартных типов - C++

13.02.2010, 00:39. Просмотров 3002. Ответов 26
Метки нет (Все метки)

Если моя функция LOG принимает qString* можно ли сделать так чтобы автоматически вызывалась конструирование временного объекта и он отправлялся в фунцию? т.е. вместо
C++
1
LOG(&qString("Привет мир"));
просто
C++
1
LOG("Привет мир");
Объявление LOG такое:
C++
1
void LOG(qString* Error, ...);
Мне нужно заявить как то компилятору что бы он мог преобразовывать из const char* в qString ? Что должна делать эта функция? Как быть? Впервые сталкиваюсь с таким
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2010, 00:39     Автоматическое преобразование стандартных типов
Посмотрите здесь:

Почему не происходит автоматическое преобразование стандартных типов? - C++
Имеется следующий код : int a = 10; cout<<a/100<<endl; Вариант из явным преобразованием работает чудесно :

Переобъявление стандартных типов C++ - C++
Не давно в голову пришла идея переобъявить стандартные типы через union, это может дать возможность обращения к байтам или битам числа, вот...

Преобразования стандартных типов - C++
Добрый день, можете пожалуйста кинуть какой-нибудь FAQ по критическим преобразованиям стандартных типов в языке Си(++). Например, ...

Специализация шаблона для стандартных типов - C++
Пишу динамическую структуру данных (не суть важно какую, допустим для простоты стек). Она работает с объектами типа Box, которые: 1....

Определение и использование функций для обработки стандартных типов данных - Visual C++
Заданы три числа. Отрицательные числа заменить абсолютными значениям, нулевые значения – единицами, положительные – увеличить в два раза.

Почему операторы инкремента действуют по разному для стандартных и нестандартных типов? - C++
class my { int i; public: my(int in) :i(in) {} operator int () { return i; } int operator=(int...

Преобразование типов - C++
С учебника переписал код на применение структур, но возникла проблема с преобразованием типов. Вот код проги: #include "stdafx.h" ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
13.02.2010, 18:00     Автоматическое преобразование стандартных типов #21
Цитата Сообщение от insideone Посмотреть сообщение
У меня была такая мысль, однако придется делать его глобальным?
сделай. объекты cin/cout - тоже глобальны и ничего. пользуемся.
используй паттерн Одиночка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 238.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <sstream>
#include <iostream>
 
class Log {
public:
  friend std::ostream &operator<<(std::ostream &out, const Log &rhs);
 
  static Log &Instance() {
    static Log instance_;
    return instance_;
  }
  template <typename T>
  Log &operator<<(T t) {
    data_ << t;
    return *this;
  }  
private:  
  Log() { }
  std::ostringstream data_;
};
 
std::ostream &operator<<(std::ostream &out, const Log &rhs) {
  out << rhs.data_.str();
  return out;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
  Log::Instance() << 12 << "hello" << 22.33 << "\n";
  std::cout << Log::Instance();
 
  return 0;
}
insideone
Модератор
Автор FAQ
3636 / 914 / 49
Регистрация: 10.01.2010
Сообщений: 2,464
13.02.2010, 18:39  [ТС]     Автоматическое преобразование стандартных типов #22
Цитата Сообщение от CheshireCat Посмотреть сообщение
Читай про паттерн "синглтон" (Singleton) - это то, что тебе нужно. Будет примерно так:
Я так понял нужно завести функцию которая возвращает определенный в ней статически объект класса Log? Думаю тогда myLog излищне и будет что то вроде
C++
1
LOG() << "сообщение";
Цитата Сообщение от zim22
используй паттерн Одиночка
Т.е. класс выходит как бы не для создания объекта а для использования статически? Интересное решение. спасибо
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
13.02.2010, 18:47     Автоматическое преобразование стандартных типов #23
Цитата Сообщение от insideone Посмотреть сообщение
Т.е. класс выходит как бы не для создания объекта а для использования статически?
ну почему же? класс создаёт объект. только один
insideone
Модератор
Автор FAQ
3636 / 914 / 49
Регистрация: 10.01.2010
Сообщений: 2,464
13.02.2010, 19:58  [ТС]     Автоматическое преобразование стандартных типов #24
оффтоп про std::string и qString
Цитата Сообщение от ISergey Посмотреть сообщение
И Чем тебе не угодил стандартный класс std::string
Он не умеет делать такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
qString Temp = CURLINE.c_str(); // Temp == "10%, 30 - 40"
 
qString GraphTime, GraphData, GraphInterval;
size_t CutTo = Temp.Find(",")-1;
Temp
    .Cut(GraphTime, 0, CutTo) // GraphTime == "10%"
    .Trim("%, \t", LTRIM)
    .Find(CutTo, " \n\t")
    .Cut(GraphData, 0, CutTo+1) // GraphData == "30"
    .Trim(" -\t", LTRIM)
    .Find(CutTo, "\0")
    .Cut(GraphInterval, 0, CutTo-1); // GraphInterval == "40"

Добавлено через 3 минуты
Цитата Сообщение от zim22 Посмотреть сообщение
ну почему же? класс создаёт объект. только один
Да) Объект создается, но впринципе класс Log изначально проектируется под 1 экземпляр который создаться статически, а Log MyLog; и другие экземпляры создавать нет надобности) Интересное решение. Да я тут с вами настоящим программистом стану, спасибо всем
zim22
depict1
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
13.02.2010, 20:01     Автоматическое преобразование стандартных типов #25
Цитата Сообщение от insideone Посмотреть сообщение
Он не умеет делать такое
sscanf умеет

Добавлено через 1 минуту
Цитата Сообщение от insideone Посмотреть сообщение
но впринципе класс Log изначально проектируется под 1 экземпляр который создаться статически,
это у меня он статический. можешь его динамически создавать.
также можешь динамически его конфигурировать нужным типом подкласса.
почитай у GoF про этот паттерн.
insideone
Модератор
Автор FAQ
3636 / 914 / 49
Регистрация: 10.01.2010
Сообщений: 2,464
13.02.2010, 20:17  [ТС]     Автоматическое преобразование стандартных типов #26
Цитата Сообщение от zim22 Посмотреть сообщение
sscanf умеет
Э.. это не для вывода ли? Мне вообще нужно сохранить строки эти чтобы потом их преобразовывать в цифры и послать в функцию. В общем я создал этот класс qString как небольшую замену регулярным выражениям, по крайне это удовлетворяем моим подтребностям. Здесь совмещены удачные (по моему мнению) идеи из Lua (-1 значит последний элемент), JavaScript - jQuery (цепные функции). Хотя конечно я много раз слышал что нельзя программировать на C++ как на других языках, но тут я правда знаю что творю.

GoF возьму на заметку, спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2010, 03:29     Автоматическое преобразование стандартных типов
Еще ссылки по теме:

Преобразование типов - C++
Вот я создаю двумерный массив n=1; m=2; char **mas=new char *; mas=new char; после этого мне нужно увеличить размер...

Преобразование типов - C++
Вопрос по преобразованию строки в число , и наоборот . Например на форме расположен MaskedTextBox , Button и Label . Как при нажатии на...

[C++]Преобразование типов! - C++ WinAPI
Жесть вот как мне преобразовать что бы не возникало ошибок пробовал разные варианты в итоге ошибка не исчезает! if (...

Преобразование типов в С++ - C++
Задача: Определить два класса, String с преобразованием из char * в строку и обратно. Мой код: #include &lt;iostream&gt; ...

преобразование типов - C++
помогите у меня программа выдает ошибки преобразования типов подскажите как должно быть чтоб все работало программа делает перестановки...


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

Или воспользуйтесь поиском по форуму:
ISergey
14.02.2010, 03:29     Автоматическое преобразование стандартных типов
  #27

Не по теме:

Он не умеет делать такое
Фух.. не дай бог.. такое в Стандарте увидеть..

Yandex
Объявления
14.02.2010, 03:29     Автоматическое преобразование стандартных типов
Ответ Создать тему
Опции темы

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