Operator wywołania obiektu funkcyjnego utworzonego dynamicznie

0
template <typename T>
class MyClass
{
public:
	MyClass(T liczba) { zmienparametr(liczba); }
	void zmienparametr(T liczba) { parametr = liczba; }
	T operator()(T i) {
		return i * parametr;
	}
private:
	T parametr;
};

Tworzę obiekt klasy:

	auto wsk = new MyClass<double>(0.3333);

Czy poniższy to jedyny sposób aby odnieść się do operatora wywołania?

	cout << wsk->operator()(2);
5

Nie. Możesz wywołać bezpośrednio operator() poprzez samo ().

Przykład dla c++17:

#include <iostream>
#include <memory>

template <typename T>
class MyClass {
public:
    MyClass(const T &x) {
        setX(x);
    }
    void setX(const T &x)  {
        this->x = x;
    }
    T operator()(const T &i) {
        return i * x;
    }

private:
    T x;
};

int main(int argc, char const *argv[]) {
    auto val  = MyClass(1);
    std::cout << val(2) << std::endl;

    auto ptr = std::make_unique<MyClass<int>>(3);
    std::cout << (*ptr)(2) << std::endl;
    return 0;
}
0

Dziękuję za odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1