【发布时间】:2019-03-15 04:31:32
【问题描述】:
我对此感到困惑!我不断收到以下错误消息:
addSchool没有在作用域中声明
和,
没有匹配函数调用
school::addschool()
我看不出这些是如何被声明的。 (我也是编程新手)
School 是一个类,该类的成员之一是向量指针。
.h文件:
class school {
private:
vector<school*> schools;
public:
school();
void addSchool(school *s);
};
.cpp文件:
void school::addSchool(school *s){
vector<school *> schools;
s = new school();
schools.push_back(s);
}
main函数:
school *newSchool = new school();
school::addSchool(&newSchool);
delete newSchool;
【问题讨论】:
-
newSchool是一个指针,所以&newSchool是一个指向指针的指针。 -
而且这些都没有编译的机会;
addSchool既不是静态类成员,也不是school **参数,两者都会在main的调用中用一行代码中断编译。此外,虽然不是编译时错误,但school::addSchool中的本地schools对象隐藏了成员变量schools,这是一个平面逻辑错误。 -
newSchool是一个存在于堆栈中的值,如果在该堆栈被拆除后使用任何尝试存储其地址的尝试,都将导致oldSchool。 -
你为什么在代码级别使用“HEADER FILE”和“CPP文件”和“MAIN FUNCTION”。请剪切并粘贴您的代码。似乎缺少一些部分。