c++ - 没有对象不能调用成员函数

标签 c++

这个程序让用户输入 name/age 对,然后使用类输出它们。 这是代码。

#include "std_lib_facilities.h"

class Name_pairs
{
public:
       bool test();
       void read_names();
       void read_ages();
       void print();
private:
        vector<string>names;
        vector<double>ages;
        string name;
        double age;
};

void Name_pairs::read_names()
{
     cout << "Enter name: ";
     cin >> name;
     names.push_back(name);
     cout << endl;
}

void Name_pairs::read_ages()
{
     cout << "Enter corresponding age: ";
     cin >> age;
     ages.push_back(age);
     cout << endl;
}

void Name_pairs::print()
{
     for(int i = 0; i < names.size() && i < ages.size(); ++i)
             cout << names[i] << " , " << ages[i] << endl;
}

bool Name_pairs::test()
{
   int i = 0;
   if(ages[i] == 0 || names[i] == "0") return false;
   else{
        ++i;
        return true;}
}


int main()
{
    cout << "Enter names and ages. Use 0 to cancel.\n";
    while(Name_pairs::test())
    {
     Name_pairs::read_names();
     Name_pairs::read_ages();
     }
     Name_pairs::print();
     keep_window_open();
}

但是,在 int main() 中,当我尝试调用函数时,我得到 "cannot call 'whatever name is' function without object." I'我猜这是因为它正在寻找像 variable.testvariable.read_names 这样的东西。我应该如何解决这个问题?

最佳答案

您需要实例化一个对象才能调用其成员函数。成员函数需要一个对象来操作;它们不能单独使用。例如,main() 函数可能如下所示:

int main()
{
   Name_pairs np;
   cout << "Enter names and ages. Use 0 to cancel.\n";
   while(np.test())
   {
      np.read_names();
      np.read_ages();
   }
   np.print();
   keep_window_open();
}

关于c++ - 没有对象不能调用成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1127738/

相关文章:

c++ - 通过运行应用程序以编程方式确定正在使用的共享库

c++ - std::enable_if 未编译(无效的模板参数)

c++ - 有没有办法使用 move 而不是复制语义来包装Python中的函数返回值(对象)?

C++编译时检查函数参数

c++ - QTreeview 增加 View 大小

c++ - 模板类可选地插入初始值作为模板参数

c++ - 搜索参数空间时避免嵌套 for 循环

c++ - qca-ossl 插件未加载。显示错误 : HMAC(SHA1) is not supported

c++ - 带有 C++ 示例的 Poco::ObjectPool

c++ - 为什么 boost::hana::overload_t 不能成为类的成员