В вашем коде есть ряд ошибок, все из которых связаны с природой переменной-члена pinakas
. В его нынешнем виде вы объявляете это как массив указателей (на int
), и, кроме того, вы используете нестандартный синтаксис для «гибких» массивов (пустой []
).
Обычно я не просто вставляю «фиксированный» код в качестве ответа, но в этом случае этот код (с добавленными \\\
комментариями, в которые я внес изменения), вероятно, будет наиболее кратким способом помочь вам.
Хотя, как многие здесь, без сомнения, отметят, гораздо лучше избегать использования «сырых» указателей и операторов new
и delete
, и используйте вместо него контейнер std::vector
.
#include <iostream>
#include <list>
//using namespace std;/// This is considered 'bad practice' by many programmers
using std::cout;/// Just use the aspect of the STL that you need!
class Euler {
private:
int korifes = 0;
int akmes = 0;
int* pinakas;/// This will point an 'array' of integers
public:
void print() {
cout << pinakas[0]; return;/// No longer any need for the dereference (*)
}
Euler(int korifess, int akmess);
~Euler() {
delete[] pinakas;/// No need for the dereference (*)
}
// void addAkmes(int kor1, int kor2);/// You haven't provided an actual definition for this, but your never use it!
};
Euler::Euler(int korifess, int akmess) : akmes(akmess), korifes(korifess)/// NOTE: Members are initialized in DECLARATION order!
{
pinakas = new int[korifes];/// Use "[]" (not "()") to allocate an array!
pinakas[0] = 89;/// No need for the dereference (*)
}
Не стесняйтесь обращаться за любыми дополнительными разъяснениями и / или объяснениями.