[Visual]Zarządzana (gc) dynamiczna tablica w klasie

0

Hej,

Próbowałem w Visual C++ stworzyć implementację wektora w 3d. Napisałem zarządzaną klasę Vector - przedstawiony jako dynamiczna tablica trzech współrzędnych. Przeciążyłem kilka operatorów aby mieć podstawowe operacje na wektorach.

Plik nagłówkowy Vector.h:

#pragma once

ref class Vector
{
	double ^ elements;

public:
	double Elements(int i);

	Vector(double x, double y, double z);
	
	Vector ^ operator+(Vector u);
	Vector ^ operator-(Vector u);
	Vector ^ operator*(double a);
	double operator*(Vector u);
	Vector ^ operator/(Vector u);
};

plik główny klasy Vector.cpp:

#include "Vector.h"

Vector::Vector(double x, double y, double z)
{
	elements = gcnew double[3];
	elements[0] = x;
	elements[1] = y;
	elements[2] = z;
}

Vector ^ Vector::operator+(Vector u)
{
	return gcnew Vector(elements[0] + u.elements[0], elements[1] + u.elements[1], elements[2] + u.elements[2]);
}

Vector ^ Vector::operator-(Vector u)
{
	return gcnew Vector(elements[0] - u.elements[0], elements[1] - u.elements[1], elements[2] - u.elements[2]);
}

Vector ^ Vector::operator*(double a)
{
	return gcnew Vector(elements[0] * a, elements[1] * a, elements[2] * a);
}

double Vector::operator*(Vector u)
{
	return elements[0] * u.elements[0] + elements[1] * u.elements[1] + elements[2] * u.elements[2];
}

Vector ^ Vector::operator/(Vector u)
{
	return gcnew Vector(
		elements[1] * u.elements[2] - elements[2] * u.elements[1],
		elements[2] * u.elements[0] - elements[0] * u.elements[2],
		elements[0] * u.elements[1] - elements[1] * u.elements[0]);
}

I dostaję 36 błędów - po jednym dla każdego odniesienia do elementu tej tablicy, każdy taki sam:
error C3915: 'System::Double' has no default indexed property (class indexer)

Nie mogę rozkminić o co chodzi. Domyślam się że coś jest nie tak że użyłem zarządzanego wskaźnika tak, jak zwykłego wskaźnika do stworzenia tablicy dynamicznej:

double * t = new double[n];
double ^ T = new double[n]

a to niekoniecznie może być właściwe w .NETcie

Szukałem po necie rozwiązania tego problemu, jak właściwie mam zrobić zarządzaną tablicę cały dzień... nie znalazłem rozwiązania.

0

double ^ table = gcnew double[10000];

0

Nie wiem czy zauważyłeś, ale właśnie coś takiego mam:

w nagłówkowym jest:

double ^ elements;

a w konstruktorze jest:

elements = gcnew double[3];

co zusammen do kupy daje:

double ^ elements = gcnew double[3];
0
 array<double>^ wtf = gcnew array<double>(3);
0

zamieniłem tamtą linijkę w nagłówkowym na:

array<double>^ elements;

a w konstruktorze na:

elements = gcnew array<double>(3);

i dostaję błąd o treści:
fatal error LNK1561: entry point must be defined

0

Jakiegoś maina tam masz?

0

Nie, no, na razie tworzę samą strukturę klas. Napisanie maina z programem, to będze właściwie ostatni krok. Nie chodzi mi o to żeby program coś robił - na razie ma się tylko skompilować...

0

Stworzyłeś aplikację z podsystemem, która wymaga maina, a chcesz, żeby działało bez niego ;). Zmień typ aplikacji na bibliotekę.

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