gpt4 book ai didi

C++错误没有匹配函数来调用静态模板方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:00 27 4
gpt4 key购买 nike

我试图从另一个类调用一个静态方法,但是当我运行它时,它抛出这个:

PagedArray.cpp:21:37: error: no matching function for call to ‘FileManager::loadPage(int&)’
page = FileManager::loadPage(index);

这是我尝试从中调用它的代码:

分页数组.cpp

#include "PagedArray.h"
#include "../Entidades/FileManager.h"


template <typename T>
int* PagedArray<T>::operator[](int index) {

Page<T>* page = nullptr;

for(int i = 0; i < this->pagesQueue->Size(); i++){
if(index == ( *(this->pagesQueue->get(i)->getDato()) )->getLineaActual()){
page = *this->pagesQueue->get(i)->getDato();
}
}

if(page == nullptr){
page = FileManager::loadPage(index); //This is the problem
}
return page->getInfo()->get(index)->getDato();

}

这是 FileManager 类:

文件管理器.h

#include "../Estructuras/Page.h"


class FileManager {

public:

FileManager();

template <typename T>
static Page<T>* loadPage(int index);
};

文件管理器.cpp

#include "FileManager.h"

FileManager::FileManager(){}

template <typename T>
Page<T>* FileManager::loadPage(int index) {
Page<T>* page = nullptr;
return page ;
}

loadPage 方法中的主体只是为了进行测试,所以我认为它并不真正相关。对不起,如果我错过了什么,这是我第一次来这里,所以如果您需要其他东西,请在下面留下

最佳答案

FileManager::loadPage 是一个函数模板,它有一个不能自动推导的模板参数。所以你必须明确指定它。例如

page = FileManager::loadPage<T>(index);
// ~~~

关于C++错误没有匹配函数来调用静态模板方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42431593/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com