假设如下:
我们有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);
}
答案 0 :(得分:2)
该行
;|.dlptr_offset| DCD dynarec_local+28-(|.dlptr_pic|+8)
;ldr r12, |.dlptr_offset|
;|.dlptr_pic|
;add r12, pc, r12
ldr r12, =dynarec_local+28
相当于:
obj(n)
自obj.operator()(n)
没有Job
功能以来,这是不对的。
要重置operator()
的值,请使用:
obj
您可以通过在void Person::set_job_name(char * n)
{
obj = Job(n);
}
中提供set_name
功能来简化它。如果你这样做,上面可以是:
Job