k***n 发帖数: 20 | 1 class A {
private:
...
public:
A();
A(const char x, const char y);
A(const string& z);
...
}
int main () {
A aa;
const string str("AT");
aa(str);
return 0;
}
gcc编译提示:
no match for call to `(A) (const std::string&)'
我知道这个错误可能很低级,不吝求教。 |
S*********g 发帖数: 5298 | 2 你这个aa(str) call 的不是costructor
constructor是在
A aa;
这一行的时候执行的
【在 k***n 的大作中提到】 : class A { : private: : ... : public: : A(); : A(const char x, const char y); : A(const string& z); : ... : } : int main () {
|
k***n 发帖数: 20 | |
e****d 发帖数: 333 | 4 你实际上在用 operator overloading
#include
#include
using namespace std;
class A{
string _str;
public:
A(){}
A(const string& z):_str(z){}
void operator()(const string& z){_str=z;}//(*)
string get() const{return _str;}
};
int main () {
A aa;
const string str("AT");
aa(str);
cout<
}
(*)行返回值不是void的时候,基本就是functional object了。 |