假设以下内容:
我们有class Person
和class Job
。
class Job {
public:
Job(); //default constructor
Job(char * n); //parameterized constructor
~Job(); //destructor
protected:
Salary p; //another class
}
class Person {
public:
Person(); //default constructor
~Person(); //destructor
void set_job_name(char * n); //pass the job name to `Job` constructor
protected:
Job obj;
};
当我尝试使用set_job_name(char * n)
Job类的参数化构造函数时,出现此错误有Type "Job" does not provide a call operator.
什么想法吗?
这是做set_job_name()
什么的:
void Person::set_job_name(char * n) {
obj(n);
}
线
obj(n)
等效于:
obj.operator()(n)
这是不正确的,因为Job
它没有operator()
功能。
要重置的值obj
,请使用:
void Person::set_job_name(char * n)
{
obj = Job(n);
}
您可以通过在中提供一个set_name
功能来简化它Job
。如果这样做,以上内容可能是:
void Person::set_job_name(char * n)
{
obj.set_name(n);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句