Получение ошибки в преобразовании c ++ из int в не скалярный тип 'point': - PullRequest
0 голосов
/ 11 апреля 2020

1.В этом коде я хочу создать массив типа точек и инициализировать его значение каждого индекса как 1,2

. Могу ли я получить следующий код ???

2 . Какой правильный способ сделать это, если следующий код не работает ???

#include<iostream>
using namespace std;
class point
{
 private:
   int x,y;
 public:
   point(int a,int b)
   {
       cout<<"constructor called here"<<endl;
       x=a;
       y=b;
   }
};

int main()
{
point p[2]{(1,2),(1,2)}; 
}

Ответы [ 2 ]

4 голосов
/ 11 апреля 2020

Вы должны использовать {} вместо ():

point p[2]{{1,2}, {1,2}}; 

или использовать имя класса:

point p[2]{point(1,2), point(1,2)}; 
1 голос
/ 11 апреля 2020

Использовать паратезы { } не ().

Существуют различные способы отображения точек, например, создать функцию:

  • , которая просто отображает членов класса: 1
void display() { std::cout<<x<<" "<<y; }
  • , который принимает объект типа точки и отображает то же самое: 2
friend void display(point p) { std::cout<<p.x<<" "<<p.y; }

Позвоните им по main:

int main()
{
   point p[2]{{1,2},{2,1}}; 

   // method 1:
   p[0].display(); // 1 2
   p[1].display(); // 2 1

   // method 2:
   display(p[0]); // 1 2
   display(p[1]); // 2 1
}
...