微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何声明一个返回类实例的函数,该实例在同一个类中使用?

如何解决如何声明一个返回类实例的函数,该实例在同一个类中使用?

我已经尝试了几个星期并搜索了几天的答案,但还没有找到。我的代码相当大且相互交织,但我的问题是 3 个函数/类,因此我只会显示我的声明和相关信息。我有以下不兼容的代码

class Word{
private:
*members*
public:
  //friend declaration so i Could access members and use it in class - doesn't help
  friend Word search_in_file(const string& searchee);

  //function that uses prevIoUs function to create a Word object using data from file:
  //type int to show it succeeded or Failed
  int fill(const string& searchee){
     Word transmission = search_in_file(searchee);
     //here are member transactions for this->members=transmission.member;
}

};

//function to return Word class from file:
Word search_in_file(const string& searchee){
//code for doing that
}

我已经尝试了所有可以声明函数或类的可能性,但没有找到解决方案。起初我只在构造函数中使用了 search_in_file() 函数(现在它与函数 fill() 有相同的问题)并在类中声明和定义了 search_in_file() 函数。然后它像上面的代码一样工作(唯一的例外是朋友函数也是具有定义的实际函数)。但是我需要在没有声明 Word 对象的情况下使用该函数,因此它需要在类之外。我怎样才能让它工作?

我还应该指出,我有一个使用 Word 作为参数的非成员函数,该函数适用于上述解决方案。虽然它有重载版本,但它没有使用 Word 作为在类之前声明的参数,我认为这就是它起作用的原因。

解决方法

你想要这个:

#include <string>

using namespace std;

// declare that the class exists
class Word;

// Declare the function   
Word search_in_file(const string& searchee);

class Word {
private:
  
public:
  //friend declaration so i could access members and use it in class - doesn't help
  friend Word search_in_file(const string& searchee);

  //function that uses previous function to create a Word object using data from file:
  //type int to show it succeeded or failed
  int fill(const string& searchee) {
    Word transmission = search_in_file(searchee);
    //here are member transactions for this->members=transmission.member;
  }

};

// Now class Word is completely defined and you can implement the function

Word search_in_file(const string& searchee)
{
  //...
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。