оператор () перегрузка с шаблоном C++

Не уверен, какую платформу вы используете для адаптивного дизайна, но используя Bootstrap, я добавил это в , и это сработало для меня:


Здесь есть некоторая хорошая информация об этом:

http://www.html5rocks.com/en/mobile/mobifying/

В частности, в разделе «Видовые окна» рассматривается ваш вопрос.

7
задан 14 June 2009 в 06:32
поделиться

5 ответов

Если вы хотите, чтобы вызов функции был неявным, вам нужно применить шаблон к классу следующим образом:

template <typename T>
class MyClass
{
  public:
  T first;

  T operator () () const { return first; }  
};

Если он должен быть приведен к другому типу, он должен быть:

template <typename T>
class MyClass
{
  public:
  T first;

  template <typename U>
  U operator () () const { return (U)first; }  
};
5
ответ дан 7 December 2019 в 03:20
поделиться

Что вы хотите сделать, так это предоставить общий конвектор от Data до userType. Рассмотрим что-то вроде этого:

#include<iostream>
#include<string>
using namespace std;
class Data{
    public:
        std::string str;
        double var;

        template <typename UserType>
        operator UserType() const { return  UserType(var);}
};

int main()
{
Data d;
d.var = 5.5;
cout << int(d);
cout<<"\n";
return 0;
}

Это то, что вам нужно?

3
ответ дан 7 December 2019 в 03:20
поделиться

Компилятор столкнется с довольно неоднозначной ситуацией при попытке вывести аргументы шаблона из кода, подобного этому

шаблону. T operator () () const {сначала вернуть; }

потому что для

int i = obj();

T может быть не только int, но и любым типом, "приводимым" к int.

1
ответ дан 7 December 2019 в 03:20
поделиться

Вы пробовали int i = obj (); ?

0
ответ дан 7 December 2019 в 03:20
поделиться

Я не уверен, почему это вообще шаблон, вы всегда возвращаете int, верно? Спасибо

0
ответ дан 7 December 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: