C++ статическая перегрузка оператора

Это находится на странице, которую Вы связали. Используйте fromstring.

8
задан jameszhao00 7 September 2009 в 18:55
поделиться

4 ответа

Если вы ищут метапрограммирование с использованием встроенного оператора: это невозможно - встроенные операторы работают со значениями времени выполнения, а не значениями времени компиляции.

Вы можете использовать boost :: mpl для этого, а вместо использования встроенных операторов используйте его шаблоны, например в для op [] , плюс для op + и т. Д.

int main() {
    using boost::mpl::vector;
    using boost::mpl::at_c;
    using boost::mpl::plus;
    using boost::mpl::int_;

    typedef vector<int, bool, char, float> Class_1;
    typedef vector< int_<1>, int_<2> > Numeric_1;

    at_c<Class_1, 0>::type six = 6;
    typedef plus<at_c<Numeric_1, 0>::type 
                ,at_c<Numeric_1, 1>::type>::type r;
    int i3[r::value] = { 4, 5, 6 };
    return ((i3[0] + i3[1] + i3[2]) * six) == 90;
}
13
ответ дан 5 December 2019 в 07:35
поделиться

Если вы имеете в виду, что оператор работает с классом, №. Это не имеет смысла, это все равно что сказать оператор + может оператор для int или двойной . Операторы - это синтаксический сахар для функций, и они работают с переменными (значениями), а не типами.

3
ответ дан 5 December 2019 в 07:35
поделиться

Нет, операторы не могут быть статическими членами класса. Вместо этого используйте обычную статическую функцию.

1
ответ дан 5 December 2019 в 07:35
поделиться

I don't believe it's possible, though I could be wrong on this front. I'd like to ask why you'd want to do this though. Rather than performing operations on a class instead of instances, perhaps you just require one instance throughout your application? In this case, you should probably be using the singleton pattern.

5
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

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