为什么我不能这样做?编译说
警告C4832:令牌'.' 在UDT之后是非法的'A:看到'A'的声明错误C2275:'A':非法使用此类型作为表达式:参见'A'的声明
class A{
public:
    std::string getString(){return "olalal";}
};
class B{
public:
    std::string getStringFromA() {return A.getString();}
};
int main()
{
    B b;
    cout << b.getStringFromA();
    return 0;
}
您只能static在对象上调用非成员函数.
例如
std::string B::getStringFromA()
{
    A object_of_type_A;
    return object_of_type_A.getString();
}
或者,您可以创建一个未命名的临时用户A并调用getString()它,例如
class B {
public:
    std::string getStringFromA() { return A().getString(); }
};
如果getString()声明static了A,你可以在没有对象的情况下调用函数,但语法使用的::不是..
例如
std::string B::getStringFromA()
{
    return A::getString();
}
getStringFromA但是,使用函数名称,我希望传递一个A我希望从中获取字符串的特定参数,也许传递A引用.
class B {
public:
    std::string getStringFromA(A& a) { return a.getString(); }
};
如果getStringin A实际上没有修改A对象,那么最好声明该函数,const以便可以在const实例上调用它A.在这种情况下,const可以使用参考.
class A {
public:
    std::string getString() const { return "olalal"; }
};
class B {
public:
    std::string getStringFromA(const A& a) { return a.getString(); }
};