LINUX.ORG.RU

Пара наитупейших вопросов по C++

 , ,


0

1

Я опять выхожу на связь.

Есть два наитупейших вопроса.

1. Можно ли вызывать функцию для переменной? Ну что-то вроде

float a = 1.0;

a.someShit();

А в someShit будут какие-нибудь преобразования. Я не знаю, зачем оно мне нужно, но стало интересно.

2. Где почитать про шаблоны (или как они правильно называются), чтобы совсем для умственно отсталых, вроде меня? Где-то видел подобную конструкцию:

FunctionName<int>(...);
Мне надо, чтобы в <> был тип переменной. В последний раз прикасался к этому давно, и уже не помню, какая там была ошибка, но я не осилил. Дело было ещё в том, что название функции было как в исходном файле, так и в заголовочном, и я так и не разобрался, куда именно писать.

Deleted
  1. Для переменной типа std::string ты можешь вызывать какой-нибудь там .c_str(), а вот у примитивного типа float сделать такое нельзя. Только если оборачивать литерал в какой-нибудь там специальный класс Float, как это сделано в той же Java. Чистоты ООП, где даже примитивные типы являются классами, в C++ ты не найдёшь.

  2. Любую инфу по теме. Начиная с https://ru.wikipedia.org/wiki/Шаблоны_C%2B%2B и заканчивая одноимённой главой в твоём учебнике по C++.

EXL ★★★★★
()
#include <iostream>
class Float {
public:
  Float(float f) : _f{f} {}
  void someShit() {
    std::cout << "shit: " << _f << std::endl;
  }
private:
  float _f;
};

#define float Float
int main() {
 float a = 1.0;
 a.someShit();
return 0;
}
fluorite ★★★★★
()

Первое, это т.н. Uniform Function Call Syntax. Штука довольно интересная, в том же D используется везде. Комитет стандартизации C++ тоже обсуждал эту тему, но в иотге, насколько я понял, решили отклонить, т.к. оно ломает что-то еще.

m0rph ★★★★★
()
Ответ на: комментарий от crutch_master

Да ладно, этж пример. В нормальных сорцах будет что-то типа: myapp_float

deep-purple ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.