-3

编译器说找不到类中的方法。整个错误信息是找不到函数

common::base::CategoryIdCache::addNewCid(std::string, common::base::eSqlCatalog&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std ::vector, std::allocator >, std::allocator, std::allocator > > >&)

候选人是

common::base::CategoryIdCache::addNewCid(std::string&, common::base::eSqlCatalog&, std::vector, std::allocator >, std::allocator, std::allocator > > >&, std ::vector, std::allocator >, std::allocator, std::allocator > > >&)

4

2 回答 2

3

发生这种情况的原因有几个:

  • 您正在实现具有不同签名的函数
  • 或者您尝试将临时对象绑定到非常量引用

所以

struct X
{
    void foo(std::string& x);
};

//implementation
void X::foo(std::string x); //wrong - different signature

或者

struct X
{
    void foo(std::string& x);
};

//
int main()
{
    X x;
    x.foo("some string");
}
于 2013-06-19T09:20:30.513 回答
0

通过引用传递意味着您将变量的地址(引用)传递给函数,而通过值传递意味着您正在复制相关变量在该时刻包含的值,然后将其传递给函数。

与传递值的方式相比,您必须以不同的方式声明原型或函数。

于 2013-06-19T09:32:14.020 回答