类型“类名”不提供调用运算符.C++
Type `Class Name` does not provide a call operator. C++
假设如下:
-
我们有
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);
}
您可以通过在Job
中提供set_name
函数来稍微简化它。如果你这样做,上面可以是:
void Person::set_job_name(char * n)
{
obj.set_name(n);
}
相关文章:
- NOEXCEPT 函数调用运算符的说明符_Not_fn
- 检查类是否具有可能重载的函数调用运算符
- 调用运算符时出现链接器错误<<,如何解决?
- C++:对函子重载调用运算符的未定义引用
- C++ 类的构造函数和函数调用运算符 () 重载之间的歧义
- 如何在"this"上调用运算符()?
- C++ 类型 'complex<double>' 中类中的复杂初始化不提供调用运算符
- lambda 的调用运算符是否需要具有链接?
- 不完整类型的调用运算符的 decltype 的特殊行为
- C++ shared_ptr不提供调用运算符
- 如何调用运算符函数添加两个对象?
- C++:调用运算符和调用其实现之间有区别吗
- 在呼叫运算符函数const中调用运算符时错误
- 当您可以使用构造函数时,为什么要重载 C++ 类或结构中的 () 运算符(可调用运算符)
- 在调用运算符重载时识别调用上下文/用法C++
- 显式调用"运算符 new"后无法访问对象的函数
- c++ 运算符 new[]/delete [] 是否调用运算符 new/delete?
- 为下标运算符和函数调用运算符提供默认参数
- c++ 类型不提供调用运算符错误
- 使用 std::function 时选择自动返回类型而不是构造函数的调用运算符