调用类型不明的类的方法

问题描述 投票:0回答:1

我有一个名为MyClass的类,该类已由另一个类订阅。当某些事件发生时,MyClass应该通知订户。我正在尝试将模板用于订户的类型。因为我不想让其他人(负责订户类的人)需要关心修改MyClass以进行订阅。所以我在下面写了代码,

class MyClass {

public:

    template<typename T>
    void subscribeEvents(const T &controller)
    {
        m_subscriber = static_cast<T*>(m_subscriber);
        m_subscriber = &controller;
    }

    void notifyPositionChanged(const long &position) const {

          (m_subscriber)->onPositionChanged(position);
    }

private:

    void m_subscriber;  // will be changed to array or something else

}

实际上controller对象有一个名为onPositionChanged的方法。

但是,您知道,该行未编译。

(m_subscriber)->onPositionChanged(position);

现在,我明白了为什么会出错,但问题是我不知道如何修改代码或更改设计。请让我知道我的缺失和误解。提前致谢。

c++ pointers templates void
1个回答
0
投票

您的模板做错了。您应该在类级别而不是方法上使用模板。不涉及演员表。

template<typename T>
class MyClass {
    T m_subscriber;
}
© www.soinside.com 2019 - 2024. All rights reserved.