Не уверен, какую платформу вы используете для адаптивного дизайна, но используя Bootstrap, я добавил это в , и это сработало для меня:
Здесь есть некоторая хорошая информация об этом:
http://www.html5rocks.com/en/mobile/mobifying/
В частности, в разделе «Видовые окна» рассматривается ваш вопрос.
Если вы хотите, чтобы вызов функции был неявным, вам нужно применить шаблон к классу следующим образом:
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; }
};
Что вы хотите сделать, так это предоставить общий конвектор от 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;
}
Это то, что вам нужно?
Компилятор столкнется с довольно неоднозначной ситуацией при попытке вывести аргументы шаблона из кода, подобного этому
шаблону. T operator () () const {сначала вернуть; }
потому что для
int i = obj();
T может быть не только int, но и любым типом, "приводимым" к int.
Я не уверен, почему это вообще шаблон, вы всегда возвращаете int, верно? Спасибо