我正在尝试调用属于类program1的函数hello
#include <iostream>
using namespace std;
class program1
{
program1();
~program1();
hello();
}
program1::hello()
{
cout<<"hello";
}
int main()
{
program1.hello(); //Call it like a normal function...
cin.get();
}
答案 0 :(得分:3)
默认情况下,类中的名称是私有的。
class program1 {
public:
program1();
~program1();
void hello() ;
};
// ...
int main(int, char **) {
program1 myProgram;
myProgram.hello();
return 0;
}
或者,您可以在临时方法上调用方法:
int main(int, char **) {
program1().hello();
return 0;
}
但这可能是在学期的后期。
答案 1 :(得分:2)
你忘了创建一个对象:
int main()
{
program1 p1;
p1.hello();
}
答案 2 :(得分:2)
;
在C ++中,方法应该有返回类型。
program1::hello(); // method should have a return type.
默认情况下,类成员和方法是私有,这意味着您无法在类范围之外访问它们。
所以,类定义应该是 -
class program1
{
public: // Correction 1
program1();
~program1();
void hello(); // Correction 2
};
void program1::hello() // Need to place return type here too.
{
cout<<"hello";
}
现在,在创建类program1
的对象时,可以在其上调用方法hello()
。
答案 3 :(得分:2)
此版本已编辑。 (确保包括所有方法的主体)
#include <iostream>
using namespace std;
class program1
{
public: // To allow outer access
program1();
~program1();
void hello(); // The void
}; // Don't miss this semicolon
void program1::hello() // The void
{
cout<<"hello";
}
int main()
{
program1 prog; // Declare an obj
prog.hello(); //Call it like a normal function...
cin.get();
}
我注意到你遗漏了你的hello()函数的返回类型。 如果你想调用hello()作为成员函数,那么按照建议你应该创建一个对象。
program1 prog;
prog.hello();
如果你想在没有对象的情况下调用它,你应该使用静态函数。
class program1
{
public: // To allow outer access
program1();
~program1();
static void hello(); // The void
}
然后你可以这样称呼它:
program1::hello();
因此,工作代码应该是这样的:
#include <iostream>
using namespace std;
class program1 {
public:
void hello();
}; // Don't miss this semicolon
class program2 {
public:
void static hello(); // to demonstrate static function
}; // Don't miss this semicolon
void program1::hello() {
cout << "Hello, I'm program1." << endl;
}
void program2::hello() {
cout << "Hello, I'm program2." << endl;
}
int main(void) {
program1 prog1;
prog1.hello(); // Non-static function requires object
program2::hello(); // Static function doesn't
return 0; // Return 0
}