小编Kha*_*Tea的帖子

C++ Polymorphism模板类:调用基类方法而不是派生类

我不知道为什么C++编译器运行基类方法(类排序的排序方法)而不是派生类方法(类SelectionSort的排序方法).

template <typename T>
class Sorting {
public:
    virtual void sort(T* data, int size, Comparator<T> comparator) const {
    };
};

template <typename T>
class SelectionSort : public Sorting<T> {
public:
    void sort(T* data, int size, Comparator<T> comparator) {
        // my selection sort code
    };
};

template <typename T>
void Array<T>::sort(Sorting<T> algorithm, Comparator<T> comparator) {
    algorithm.sort(data, size, comparator); /// Problem is here !
};

int main() {
    int nums[] = { 2, 1, 3 }; …
Run Code Online (Sandbox Code Playgroud)

c++ oop templates

2
推荐指数
1
解决办法
283
查看次数

标签 统计

c++ ×1

oop ×1

templates ×1