谢谢
6 个解决方案
#1
可以自己测试下,很快的事情啊。
#2
测试了 不可以,不知道是不是写的不对,所以来问下,另外 不要用头文件的方法
#3
上测试代码。
#4
这还用得着测试代码
//这样可以
class lei
{
int x;
public:
int getx(){return x;}
}a;
int main()
{
cout<<a.getx();
}
//像函数那样不可以
class lei;
int main()
{
lei a;
cout<<a.getx();
}
class lei
{
int x;
public:
int getx(){return x;}
};
//这是函数
int hanshu(int a);
int main()
{
cout<<hanshu(2);
}
int hanshu(int a)
{
return a;
}
#5
前置声明,参考C++ Primer:
我们也可以声明一个类但是井不定义它例如
这个声明向程序引入了一个名字Screen 指示Screen 为一个类类型
但是我们只能以有限的方式使用已经被声明但还没有被定义的类类型,如果没有定义类,
那么我们就不能定义这类类型的对象。因为类类型的大小不知道,编译器不知道为这种类类型的
对象预留多少存储空间;
但是我们可以声明指向该类类型的指针或引用,允许指针和引用是因为它们都有固定的大小,这与
它们指向的对象的大小无关。但是因为该类的大小和类成员都是未知的,所以要等到完全定义了该类
我们才能将解引用操作符* , 应用在这样的指针上或者使用指针或引用来指向某一个类成员。
例如:
这里Screen 只有声明没有定义:
我们也可以声明一个类但是井不定义它例如
class Screen; // Screen类的声明
这个声明向程序引入了一个名字Screen 指示Screen 为一个类类型
但是我们只能以有限的方式使用已经被声明但还没有被定义的类类型,如果没有定义类,
那么我们就不能定义这类类型的对象。因为类类型的大小不知道,编译器不知道为这种类类型的
对象预留多少存储空间;
但是我们可以声明指向该类类型的指针或引用,允许指针和引用是因为它们都有固定的大小,这与
它们指向的对象的大小无关。但是因为该类的大小和类成员都是未知的,所以要等到完全定义了该类
我们才能将解引用操作符* , 应用在这样的指针上或者使用指针或引用来指向某一个类成员。
例如:
这里Screen 只有声明没有定义:
class Screen; //声明
class StackScreen {
Screen *stack; //ok:指向一个Screen对象
};
#6
类的定义肯定要出现在定义类对象的语句前吧。。
#1
可以自己测试下,很快的事情啊。
#2
测试了 不可以,不知道是不是写的不对,所以来问下,另外 不要用头文件的方法
#3
上测试代码。
#4
这还用得着测试代码
//这样可以
class lei
{
int x;
public:
int getx(){return x;}
}a;
int main()
{
cout<<a.getx();
}
//像函数那样不可以
class lei;
int main()
{
lei a;
cout<<a.getx();
}
class lei
{
int x;
public:
int getx(){return x;}
};
//这是函数
int hanshu(int a);
int main()
{
cout<<hanshu(2);
}
int hanshu(int a)
{
return a;
}
#5
前置声明,参考C++ Primer:
我们也可以声明一个类但是井不定义它例如
这个声明向程序引入了一个名字Screen 指示Screen 为一个类类型
但是我们只能以有限的方式使用已经被声明但还没有被定义的类类型,如果没有定义类,
那么我们就不能定义这类类型的对象。因为类类型的大小不知道,编译器不知道为这种类类型的
对象预留多少存储空间;
但是我们可以声明指向该类类型的指针或引用,允许指针和引用是因为它们都有固定的大小,这与
它们指向的对象的大小无关。但是因为该类的大小和类成员都是未知的,所以要等到完全定义了该类
我们才能将解引用操作符* , 应用在这样的指针上或者使用指针或引用来指向某一个类成员。
例如:
这里Screen 只有声明没有定义:
我们也可以声明一个类但是井不定义它例如
class Screen; // Screen类的声明
这个声明向程序引入了一个名字Screen 指示Screen 为一个类类型
但是我们只能以有限的方式使用已经被声明但还没有被定义的类类型,如果没有定义类,
那么我们就不能定义这类类型的对象。因为类类型的大小不知道,编译器不知道为这种类类型的
对象预留多少存储空间;
但是我们可以声明指向该类类型的指针或引用,允许指针和引用是因为它们都有固定的大小,这与
它们指向的对象的大小无关。但是因为该类的大小和类成员都是未知的,所以要等到完全定义了该类
我们才能将解引用操作符* , 应用在这样的指针上或者使用指针或引用来指向某一个类成员。
例如:
这里Screen 只有声明没有定义:
class Screen; //声明
class StackScreen {
Screen *stack; //ok:指向一个Screen对象
};
#6
类的定义肯定要出现在定义类对象的语句前吧。。