我是C ++的新手,来自Java和C.我的书没有提到私人功能,谷歌的搜索也没有多少。这对我来说应该是微不足道的,但我无法让它发挥作用。
我有这段代码:
#ifndef RUNDATABASE_H
#define RUNDATABASE_H
#include <iostream>
#include <string>
class RunDatabase
{
public:
int main();
protected:
private:
bool checkIfProperID(std::string);
};
#endif // RUNDATABASE_H
在另一个档案中:
#include "RunDatabase.h"
int main()
{
std::string id; // after this, I initialize id
if(!checkIfProperID(id))
{
std::cout << "Improperly formatted student ID, must be numeric" << std::endl;
break;
}
}
bool RunDatabase::checkIfProperID(std::string id)
{
return true;
}
我收到此错误:error: 'checkIfProperID' was not declared in this scope
在Windows 7 64位上使用MinGW g ++ 4.4.1。
感谢您的帮助。
答案 0 :(得分:1)
checkIfProperID
是RunDatabase
的一种方法。这意味着您需要拥有RunDatabase
个对象才能调用checkIfProperID
。
RunDatabase rd;
rd.checkIfProperID(id);
我不明白为什么其他功能不在范围内。
这里的“范围”是班级。
RunDatabase::checkIfProperID
注意范围解析运算符::
。这意味着该方法属于类,而不属于全局范围。
答案 1 :(得分:1)
与Java不同,C ++允许独立的功能。运行程序时调用的main
函数是独立的main
,而不是成员main
。如果您按如下方式修改cpp文件,则应编译:
int main() {
RunDatabase rdb;
rdb.main();
}
RunDatabase::main() {
// the code of the main function from your post
}
答案 2 :(得分:1)
问题是main
未作为RunDatabase
的成员实现。
int main()
{
应该是
int RunDatabase::main()
{
然后,您将需要一个main()
函数,您的程序将在该函数中开始执行。
还要考虑在开始执行的main函数之后不命名类成员函数,以避免混淆。例如:
class RunDatabase
{
public:
int execute();
protected:
private:
bool checkIfProperID(std::string);
};
int RunDatabase::execute()
{
std::string id; // after this, I initialize id
if(!checkIfProperID(id))
{
std::cout << "Improperly formatted student ID, must be numeric" << std::endl;
break;
}
}
/// runs when the program starts
int main()
{
RunDatabase runDatabase;
runDatabase.execute();
}