函数指针对象似乎不存在
Function pointer object seems not to to exist
我正在编写某种库,用于组织和跟踪一些任务。每当调用nwe任务时,我的库都会使用构造函数中给定的函数指针。但当我尝试调用它时,我得到了错误Symbol not found
在头文件中,我将其声明为:
template <class T>
class TaskManager
{
private:
// other variables
T TaskID; // This is defined like this (just to clear things up)
void (*TaskHandler)(T, TaskManager<T>*);
// some more stuff
};
我称之为
template <class T>
void TaskManager<T>::startActualTask()
{
(*TaskManager<T>::TaskHander)(TaskID, this); // Errors!
}
或
template <class T>
void TaskManager<T>::startActualTask()
{
TaskManager<T>::TaskHander(TaskID, this); // Errors!
}
(删除´TaskHander前面的TaskManager<T>::
(TaskID,this);´没有帮助。)
但是它找不到符号CCD_ 3。不管我到目前为止做了什么!
完整错误为:
e:eigene dateienvisual studio 2010projectsbrainstonemod - publishbrainstonemod - publishTaskManager.cpp(212): error C2039: 'TaskHander': Is no element of 'TaskManager<T>'
with
[
T=int
]
e:eigene dateienvisual studio 2010projectsbrainstonemod - publishbrainstonemod - publishTaskManager.cpp(211): At the compiling of the class template of the void TaskManager<T>::startActualTask(void) member function
with
[
T=int
]
e:eigene dateienvisual studio 2010projectsbrainstonemod - publishbrainstonemod - publishTaskManager.cpp(73): At the compiling of the class template of the void TaskManager<T>::addTask(Task<T>) member function
with
[
T=int
]
e:eigene dateienvisual studio 2010projectsbrainstonemod - publishbrainstonemod - publishTaskManager.cpp(9): At the compiling of the class template of the TaskManager<T>::TaskManager(std::wstring,std::wstring,void (__cdecl *)(T,TaskManager<T> *)) member function
with
[
T=int
]
main.cpp(14): See the Instatiation of the just compiled class template "TaskManager<T>".
with
[
T=int
]
(我必须翻译这个。所以可能翻译不准确!)
这可能也很有趣:
template <class T>
TaskManager<T>::TaskManager(wstring title, wstring subtitle, void (*taskHandler)(T, TaskManager<T>*)) :
// Some intatiations
{
TaskHandler = taskHandler;
// More contructor stuff
}
我该怎么解决这个问题?
如果它是一个普通成员,是一个函数指针(这似乎是类声明中的指针),那么应该像这样调用它:
template <class T>
void TaskManager<T>::startActualTask()
{
TaskHandler(TaskID, this);
}
只能将TaskManager<T>::
前缀用于静态成员或typedef。
这是一个拼写错误。我把它拼写成TaskHander
,但它是TaskHandler
(我忘了l
)
无论如何,谢谢你!
相关文章:
- 我们可以访问一个不存在的联盟的成员吗
- 用于从可能不存在的容器中检索对象的 API 设计
- 指向派生作品的基本指针,即使派生对象不存在
- 调用成员函数,尽管该对象不存在
- 不存在的对象的破坏
- 指向可能不存在的对象的指针向量
- 在不存在的对象上调用静态成员函数
- 使用矢量中的现有对象,如果C++中不存在,则创建新的对象
- 当键可能不存在时,如何返回对对象的引用(从unordered_map)
- 我应该使用什么函数签名来返回对可能不存在的对象的引用
- 如何在不存在任何数据损坏风险的情况下序列化对象
- 如果文件在构造函数中不存在,则抛出异常,并在 main() 中创建对象时尝试/捕获它,如果好 - 开始使用该对象
- 对于不存在的对象,Amazon S3 HEAD 请求返回空响应,而不是 404
- 在对象不存在的情况下,std::bind 中的shared_from_this如何工作
- 函数按值返回对象,如果对象不存在,则不返回任何内容
- 函数指针对象似乎不存在
- 当C++中不存在对象时,如何使其清楚
- 对象寿命相关;下面的问题不存在一个术语/模式什么的吗
- 对不存在的对象调用成员函数工作正常,c++
- 当键不存在时,对象的C++映射将被擦除