Как динамически инициализировать переменную в объявлении класса и быть не константой - PullRequest
3 голосов
/ 24 октября 2019

Как динамически инициализировать переменную (и), т. Е. Не являющуюся постоянной, в объявлении класса, которое будет вызываться / использоваться без необходимости создания экземпляра объекта, такого как конструктор для вызова функции-члена, немедленно возвращается в функцию?
Естьдолжны быть рядом с этой переменной (переменными) в этом классе, быть постоянным членом.

enum Value :int { NO,LOW,MED,HIGH };

template<Value V> class valuation {

public:
    valuation(const ints) : pos(s) {};
    valuation(int a, int b, int c) : j(a), k(b), l(c) {};
    value() {
        if (!V)
        return (j+k+l) * pos;
    }

private:    
    const int pos;
    int j,k,l;
};


int a_function(int s) {
    return valuation<NO>(s).value();  // no need object at all
}


int main() {
    // somehow in run-time j, k, l has been given 1,2,3, or other valid values
    int v = a_function(7)   // e.g.
}

Заранее спасибо

1 Ответ

0 голосов
/ 24 октября 2019

Я думаю, что вы хотите объявить ваш value метод - или, по крайней мере, его версию - как статический член . Это позволит вам вызывать метод без создания объекта из вашего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...