gpt4 book ai didi

c++ - 调用模板成员的成员函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:18:39 25 4
gpt4 key购买 nike

此程序编译正常,但在 Period::display() 中运行 value->getSmall 时出现段错误。我正在使用 g++ 开发 Linux。我为所有可以用作 T 的类提供了一个 getSmall 函数。只是为了确保我添加了调试行并发现段错误是在值类型即 T 是 Class* 时引起的。我遇到了一些常见问题解答,其中提到了一些问题,例如在模板化上下文中调用独立值,但我对如何解决这个问题一无所知。

using namespace std;
template <class T> //T is the class which has to be related & referenced to by period
class Period
{
T value;
public:

void display()
{
cout<<setw(5)<<"| "<< value->getSmall() << "|";

size_t len; //for debug
int s; //for debug
char* p=abi::__cxa_demangle(typeid(value).name(), 0, &len, &s); //for debug
cout<<setw(5)<<"| "<< p << "|"; //for debug
}

};


class Class
{
string name;
timeTable<Teacher*> tt; //class timetable contains pointers to teachers
vector<Teacher::teachTimePerClass> teachers; //set of all teachers teaching in a Class with corresponding total time

//assigns a teacher to a period in a day
bool assign(dayNames day,int periodNum,Teacher *teacher)
{
tt.assign(day,periodNum,teacher); //assign the value in this Class's timetable
teacher->assign(day,periodNum,this); //update the teacher's timeTable
}

public:
static vector<Class*> Classes; //dont forget to destory it at the end!!


string getSmall()
{
return name;
}
};
vector<Class*> Class::Classes;

最佳答案

您假设 T 是一个指针,但从未在 Period 中给它赋值。

这样你就有了一个可能会发生段错误的未初始化指针。

关于c++ - 调用模板成员的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6898261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com