C++在类中使用函数时出错

标签 c++ class function header void

我不明白为什么会出现此错误:“函数未声明”。我仍然是编程的新手,但我正在努力学习它! 所以这是我的代码,如果你能帮助我,我将非常感激: 主要:

#include <iostream>
#include <vector>
#include "szovegkezelo.h"
using namespace std;

int main()
{
    string sz;

    beolvas(sz);
    kiir(sz);


    return 0;
}

标题:

#ifndef SZOVEGKEZELO_H_INCLUDED
#define SZOVEGKEZELO_H_INCLUDED

#include <iostream>

using namespace std;

class szovegkezelo {
protected:
    string sz;

public:szovegkezelo
    void beolvas(string &sz);
    void kiir(string t);


};

#endif // SZOVEGKEZELO_H_INCLUDED

cpp:

#include "szovegkezelo.h"
#include <iostream>

void szovegkezelo::beolvas(string &sz)
{

    getline(cin, sz);

}
void szovegkezelo::kiir(string t)
{
     cout << "a beadott szoveg: " << t << endl;
     cout << "a string hossza: " << t.size() << endl;
}

最佳答案

从它的外观来看,您正在尝试从“main”中调用一个名为“beolvas”的类函数(方法),但是因为它属于一个类,所以您不能那样调用它,您需要创建一个该类的实例并调用该实例的方法,或将函数设为静态并从类中调用它。

您的第一个选择是创建该类的一个实例,然后像这样调用该类的方法:

int main()
{
    string sz;
    szovegkezelo szov;

    szov.beolvas(sz);
    svoz.kiir(sz);

    return 0;
}

您的第二个选择是使类中的函数成为静态函数,这样它们就不需要调用类的实例:

int main()
{
    string sz;

    szov::beolvas(sz);
    svoz::kiir(sz);

    return 0;
}

static void szovegkezelo::beolvas(string &sz)
{

    getline(cin, sz);

}
static void szovegkezelo::kiir(string t)
{
     cout << "a beadott szoveg: " << t << endl;
     cout << "a string hossza: " << t.size() << endl;
}

自从我在 C++ 中做任何静态的事情以来已经有一段时间了,所以如果我在第二个选项中做错了什么,请纠正我。

关于C++在类中使用函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645773/

相关文章:

c++ - “SerialStream”没有命名类型

c++ - 为什么在未复制指针时会出现错误?

c++如何获取指向另一个类中当前对象的指针?

php - 函数按顺序调用

c++ - 未定义对 protected 静态成员的引用。我该如何解决?

c++ - 为什么未验证模板模板参数中的概念?

Python - 如何从类调用外部函数然后返回到类

java - 带 For 循环获胜者的 TicTacToe 代码...为什么找不到获胜者?

javascript - 以下两个javascript代码有什么区别?

python-3.x - 使用Python银行系统以相同的名称查找多个帐户