О построении динамического массива в C ++ - PullRequest
0 голосов
/ 27 марта 2012

Я пересматриваю свои навыки 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   

Но удивительно, когда я использую эту функцию как отдельную, не помещая внутрь функции, она работает.Есть идеи как это решить?

1 Ответ

2 голосов
/ 27 марта 2012

Вы пытаетесь использовать точечную запись . для вызова статического метода.

Вместо этого используйте правильный оператор ::.

Utils::create1DArray<double>(n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...