【发布时间】:2013-05-17 17:26:56
【问题描述】:
我的老师让我做一个期末作业。我需要用 C++ 列出一些东西(不能使用 boost、STL 等)。我的 Stuff 类必须在 List 类之后定义。我尝试过的小样本:
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class Stuff;
class List
{
private :
Stuff *s;
int n;
public :
List(int n)
{
this->n = n;
s = new Stuff[n];
}
~List()
{
delete[] s;
s = NULL;
n = 0;
}
};
class Stuff
{
private :
string name;
double price;
public :
Stuff(){}
};
int main(int argc, char **argv)
{
return 0;
}
我知道:
"如果被删除对象的类类型不完整 删除并且完整的类有一个非平凡的析构函数或 释放函数,行为未定义。”
但是那我该怎么做呢?有任何想法吗?请记住,我不能使用 boost、STL 等。而且必须在 List 类之后定义 Stuff 类。我只是不知道...
【问题讨论】:
-
这太荒谬了。教师在编写C++时如何禁止使用C++标准库?要求他们编写一个打印“Hello World”的程序,而不使用
System.*等标准Java包,JNI也是不允许的。 -
gcc 不会编译此代码,原因与您在引用中提到的类似。
-
“必须在 List 类之后定义东西类”。这是
-
@VladLazarenko - 在学习数据结构时,自己编写可以帮助您理解它们。
-
@AndyThomas-Cramer,绝对正确。这就是为什么我看到这么多程序员使用基本结构但不知道如何实现它们或它们是如何工作的。人们可能会提出他们不应该知道的论点 - 但一位优秀的工程师将能够为工作选择正确的工具,因为他们知道自己是如何工作的。