我无法弄清楚为什么我会收到此错误:“函数未声明”。我仍然是编程的新手,但我正在努力学习它! 所以这是我的代码,如果你能帮助我,我真的很高兴: 主:
#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;
}
答案 0 :(得分:3)
从它看起来,你试图从'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 ++中做了任何静态的事情已经有一段时间了,所以如果我在第二个选项中做错了,请纠正我。
答案 1 :(得分:2)
1)在main中,您尚未实例化szovegkezelo
的对象,而您正试图调用beolvas
。编译器正在寻找一个自由函数beolvas
,而您已将beolvas
声明为成员函数
2)public:szovegkezelo
是不正确的,如果你正在寻找一个默认的构造函数,如果你需要做一些特定的默认构造,那么它什么都没有,那么就是szovegkezelo()
报头中。
3)如评论中所述,这不是一个好习惯
标头文件中的using namespace std
或任何using namespace
答案 2 :(得分:2)
您的two or more data types...
错误来自于滥用......某些内容......在该公共访问说明符之后。
改变这个:
public:szovegkezelo
到此:
public:
如果您正在尝试创建构造函数,则需要将其声明为任何其他函数,减去返回类型。
除此之外,您需要先创建一个对象,然后才能调用该类的函数。每个对象都有自己的函数集合。我会认真推荐阅读一本优秀的初学者C ++ OOP书。
在main中的某个地方,您需要创建一个对象:
szovegkezelo myObject;
然后,用它来调用函数:
myObject.kiir (sz);
private
访问说明符声明。 protected
与未继承的普通类无关。