Я слежу за книгой с главой о конверсиях 2008 года. Компиляция на проекте Visual Studio 2017 C ++.
В книге был пример использования конструктора конвертации, где классы "complex" и "number" «Существуют, и« число »может быть преобразовано в« сложное »с помощью конструктора, где класс« число »поддерживает конструктор класса« сложный », чтобы позволить ему использовать частные свойства« число »(насколько я понимаю).
И пример кода из книги (скопированное слово в слово) делает intellisense неудовлетворенным, так как он не видит конструктора "сложных (число)" друзей, и я не знаю, почему.
Код как показано ниже:
#include <string>
class number;
class complex;
int main()
{
return 0;
}
class complex
{
private:
double real;
double imaginary;
public:
complex(double r = 0, double i = 0) : real(r), imaginary(i) {}
complex(number);
};
class number
{
double n;
std::string description;
//friend complex::complex(number); // finds no instance of overload of function complex::complex
public:
number(int k, std::string t = "no description") : n(k), description(t) {}
};
complex::complex(number ob)
{
//real = ob.n; //no friend, no access to private property
imaginary = 0;
}
Мой вопрос: почему "сложный друг :: сложный (число);" intellisense не виден?
Изображение ошибки из среды IDE