Dynamiczny przydział pamieci wewnątrz funkcji/szablonu

0

Mam takie coś

#include <iostream>
#include <cstdlib>

using namespace std;


template<typename T>
void fun(T* wsk, int rozmiar)
{
	//wsk = (T*)malloc(rozmiar * sizeof(T));
	wsk = new T[rozmiar];
}

int main(void)
{
	int *wsk = NULL;

	fun(wsk, 5);
	
	for(int i = 0; i < 5; i++)
		wsk[i] = i;
		
	for(int i = 0; i < 5; i++)
		cout << wsk[i] << " ";

}

jak przekazuje wskaźnik do funkcji to działam na originale, lecz poza funkcją nie jestem wstanie wypełnić tablicy
ale jak zrobię zwykłą funkcje nie szablon i zrobię zwracanie tego wskaźnika to wszystko jest ok, ale jak przekazuje wskaxnik do funkcji zwracanie nie powinno być wymagane
proszę o pomoc

2

kopiujesz wskaźnik, na kopiowanym wskaźniku alokujesz pamięć a stary wskaźnik zostaje nullptr

albo T*& albo T** albo zwróć ten wskaźnik;

0

to pierwsze z referencją zadziała ale to drugie nie chce działać.

0

ok już rozumiem, tylko jeszcze jedno pytanie kiedy próbuje zastąpić new na malloc to też nie idzie

template <typename Any>
void Jackson::macierz(Any**& wsk, int rozmiar)
{
	
	Any **temp = (Any**)malloc(rozmiar * sizeof(Any*));
	
	for(int i = 0; i < rozmiar; i++)
		temp[i] = (Any*)malloc(rozmiar * sizeof(Any));
}

there are no arguments to 'malloc' that depend on a template parameter, so a declaration of 'malloc' must be available [-fpermissive]

0

zjadłeś

#include <cstdlib>
1

malloc (C) i szablony (C++) to bzdura

1 użytkowników online, w tym zalogowanych: 0, gości: 1