【发布时间】:2020-06-28 07:33:35
【问题描述】:
我正在尝试创建一个与动态数组相关的应用程序。我试图让实例为我的数组调用一个函数,但它给了我错误:
错误:在没有对象参数的情况下调用非静态成员函数
getInstance()函数的类型有问题吗?
这是我的头文件和主文件:
dynamic_array.h
#ifndef DYNAMIC_ARRAY_H
#define DYNAMIC_ARRAY_H
template <class T>
class DynamicArray{
private:
T *arr;
static int instance;
public:
int getInstance();
};
template <typename T>
int DynamicArray<T>::getInstance(){
if(instance == 0){
//...
}
return instance;
}
template <typename T>
int DynamicArray<T>::instance = 0;
#endif // DYNAMIC_ARRAY_H
main.cpp
#include "dynamic_array.h"
int main(){
DynamicArray<int> *array = DynamicArray<int>::getInstance(); // Error occurs here
return 0;
}
【问题讨论】:
-
使
getInstance静态(在类定义中) -
该函数也返回
int,但您尝试将其分配给指针,您需要在此处进行设计更改。 -
@M.M 当我尝试静态时,我得到错误
error: invalid conversion from ‘int’ to ‘DynamicArray<int>*’ [-fpermissive] DynamicArray<int> *array = DynamicArray<int>::getInstance();^ -
是的,我在第二条评论中解决了这个问题
-
@M.M 我应该更改
getInstance或instance的类型
标签: c++ arrays templates dynamic