BG Development


  Reply to this topicStart new topicStart Poll

> Клас произволно голям вектор
TheyCallMeAlex
Публикувано на: 13-12-2022, 15:47
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 2
Регистриран на: 13.12.22



В домашната ми искат произволен голям вектор в 2 измерения

CODE

class TDVect {
private:
   unsigned int length;
   unsigned int width;

   double TDvect[length][width];

public:
   TDVect(unsigned int A,unsigned int B) {
       length = A;
       width = B;
   }
};


И получавам следната грешка:
QUOTE
a nonstatic member reference must be relative to a specific object

Как да постигна тази цел?
PMEmail Poster
Top
dvader
Публикувано на: 13-12-2022, 18:30
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5080
Регистриран на: 12.07.05



QUOTE (TheyCallMeAlex @ 13-12-2022, 15:47)
double TDvect[length][width];

Така не може.


--------------------
I find your lack of faith disturbing
PM
Top
SuN
Публикувано на: 14-12-2022, 15:37
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 12456
Регистриран на: 27.01.05



Разрешено ли е да ползваш std::vector?

Примера ти не сработва, защото компилатора трябва да може да каже колко е крайният размер на дефиницията на класа/структурата/ преди да я използваш. Ако размера е динамичен, няма как компилатора да разреши проблема.

Напомняне: разбира се, ако в структурата имаш елемент, който е указател към масив, то този елемент има размер колкото да държи указателя, а не целият масив.

В други езици е по-лесно. icon_smile.gif

Това мнение е било редактирано от SuN на 14-12-2022, 15:39


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
TheyCallMeAlex
Публикувано на: 14-12-2022, 15:54
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 2
Регистриран на: 13.12.22



До сега успях до програмирам следното

CODE
// 2 dimentional Vector.cpp : This file contains the 'main' function. Program execution begins and ends there.
//

#include <iostream>
#include <vector>
using namespace std;

class TDVect {
private:
   unsigned int row;
   unsigned int column;

   double TDvect[row][column];

public:
   TDVect(unsigned int A,unsigned int B) {
       row = A;
       column = B;
   }
  unsigned int getLength() { //to do: parameterize, return number of row or columns
       return row;
   }
  unsigned int getWidth() {
      return column;
  }
  double getElement(unsigned int i, unsigned int j) {
      return TDVect[i][j];
  }
  void setElement(unsigned int i, unsigned int j,double x) {
      TDVect[i][j] = x;
  }
};

class V :public TDVect {
   V() : TDVect(1,2) {}
   
};

class M :public TDVect {
   M(): TDVect(2,2){}
};

V multiplication(V F, M G) { //to do: row times column
   V vmid();
   vmid.setElement(0,0,F[0][0] * G[0][0] + F[0][1] * G[1][0]);
   vmid.setElement(0, 1, F[0][0] * G[0][1] + F[0][1] * G[1][1]);
   return vmid;
}

int main()
{
   TDVect vectobjA(-1, +9); //expected error; not given
   cout << vectobjA.getLength() << " ";
   return 0;
}


Получавам доста грешки във VSCode:
Е0245,Е0254,Е0040,Е0028,...
Предполагам ,че грешките са свързани една със друга но не ги разбирам. В лекцията нямахме STD::Vector.
PMEmail Poster
Top
ici
Публикувано на: 14-12-2022, 16:08
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 18218
Регистриран на: 06.06.04



double *storage = new double[m_cols*m_rows];

size_t index( int col, int row ) const { return col + m_cols * row; }

storage[index(col, row)] = x
x = storage[index(col, row)] =

или по още 101 начина.

Това дето искаш да го направиш е възможно по малко по друг начин но в C++11

auto storage = new double[M][N]();



Това мнение е било редактирано от ici на 14-12-2022, 16:12


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0