我们学院的教授给了我们一个棘手的问题,我们必须在该类中的函数和结构中声明一个类,然后从main()调用该函数。我尝试了以下代码:
#include<iostream>
using namespace std;
void fun()
{
class Test
{
public:
struct X
{
int v;
}x;
x.v=10;
void method(void) {
cout << "Local Class called, v="<<x.v;
}
};
Test t;
t.method();
}
int main(void)
{
fun();
return 0;
}
但是使用ideone编译器(C ++ 4.9.2),它会返回以下错误:
prog.cpp:在函数&#39; void fun()&#39;:prog.cpp:17:5:错误:&#39; x&#39;没有命名类型x.v = 10; ^
有人可以详细解释这个问题吗?我尝试使用X :: x.v,但那也没有用。
答案 0 :(得分:5)
您将赋值x.v=10;
放在类范围内,但只有声明和函数定义可以存在。该代码必须包含在函数中,可能是Test
的构造函数:
#include <iostream>
void fun()
{
class Test
{
public:
struct X
{
int v;
} x;
Test()
{
x.v = 10;
}
void method()
{
std::cout << "Local class called; v = " << x.v << std::endl;
}
};
Test t;
t.method();
}
int main()
{
fun();
}