Yes, because this: myinstanceofmyclass = 0;
requires construction of myclass from int, i.e. the following operator: myclass& operator= (int);
However, all the compiler can find is: myclass &operator=(const myclass &r);
Thus it tries to convert int to const myclass&, which fails. Hence the error:
error: conversion from 'int' to non-scalar type myclass requested
If you want to assign an integer to an instance of your class, then write an operator accordingly. It will, of course, also allow assignment of nonzero integers.