Я пересматриваю свои навыки C ++ для проекта машинного обучения.Итак, я работал над динамическим распределением памяти.Моя идея состоит в том, чтобы определить такие функции как статические и поместить их в класс, а затем вызывать их по мере необходимости.Поэтому я определил следующий заголовочный файл с именем Utils.h -
//Utils.h
#include <stdio.h>
class Utils
{
public:
template<class T> static T* create1DArray(int size);
};
Затем я создал следующий Utils.cpp как -
//Utils.cpp
#include<stdio.h>
#include<malloc.h>
#include"Utils.h"
template<class T> T* Utils::create1DArray(int size)
{
T* a = new T [size];
return a;
}
Затем я протестировал их как -
#include<iostream>
#include<conio.h>
#include"Utils.cpp"
using namespace std;
int main()
{
cout<<"Test";
double* a;
int n=3;
a = Utils.create1DArray<double>(n);
getch();
return 0;
}
Но я получил следующие ошибки -
error C2275: 'Utils' : illegal use of this type as an expression
error C2228: left of '.create1DArray' must have class/struct/union
error C2062: type 'double' unexpected
Но удивительно, когда я использую эту функцию как отдельную, не помещая внутрь функции, она работает.Есть идеи как это решить?