我试图在公共类中调用void函数,但是我得到了我不明白的错误:
#include <iostream>
class Buttons
{
public:
Buttons()
{
short pushl;
short *tail;
cout << "Wally Weasel" << "/t";
void init_sub(int x, int y);
};
~Buttons()
{
cout << "Buttons has been destroyed!";
};
}
int main(int args, char**LOC[])
{
int z, a;
Buttons::init_sub(z, a);
return 2;
}
Buttons::void init_sub(int x, int y)
{
cout << &x << &y;
}
新更新的代码(仍然无效):
#include <iostream>
using namespace std;
class Buttons
{
public:
Buttons()
{
short pushl; // unused variable in Constructor: should be a member variable?
short *tail; // same
cout << "Wally Weasel" << "/t";
};
~Buttons()
{
cout << "Buttons has been destroyed!";
}
void init_sub(int z, int a);
};
int main(int args, char **LOC[])
{
int z = 0;
int a = 1;
Buttons::init_sub(z, a);
return 2;
}
void Buttons::init_sub(int x, int y)
{
cout << &x << " " << &y;
}
为什么我不能调用该函数?
原始错误持续存在:“可能无法在返回类型中定义新类型”
PS:我更新了我的代码以匹配我的情况的当前状态 - 尽管仍然是相同的错误。 我一直在努力克服C ++ - 我习惯于低级编程而没有语法/结构化所涉及的语义。
答案 0 :(得分:1)
函数init_sub在错误的位置声明。必须将它从构造函数体移动到类声明中。
您无法调用该函数,因为它是非静态成员函数。它需要一个实例来调用该函数。你没有供应一个。在实例上调用它,或使其静态。
您的主要功能也有错误的签名。它应该是
int main(int argc, char* argv[])
答案 1 :(得分:0)
“init_sub”在构造函数内声明。如果你想通过类本身调用它,它也必须是静态的。
答案 2 :(得分:0)
我认为这就是你要做的。请尝试缩进代码,特别是在向其他人寻求帮助时。
#include <iostream>
using namespace std;
class Buttons
{
public:
Buttons()
{
short pushl; // unused variable in Constructor: should be a member variable?
short *tail; // same
cout << "Wally Weasel" << "\t"; // Corrected tab character
};
~Buttons()
{
cout << "Buttons has been destroyed!";
}
static void init_sub(int z, int a);
};
// Note that second argument to main should be char* loc[], one fewer pointer attribute
int main(int args, const char* const LOC[])
{
int z = 0;
int a = 1;
Buttons::init_sub(z, a);
return 2;
}
void Buttons::init_sub(int x, int y) // not "Buttons::void"
{
cout << &x << " " << &y;
}