我正在尝试在我的班级中返回一个结构数组,但我一直收到错误
error C2556: 'cellValue *LCS::LcsLength(std::string,std::string)' : overloaded function differs only by return type from 'cellValue LCS::LcsLength(std::string,std::string)'
当我返回.cpp文件时
我的班级声明是:
enum arrow {UP, LEFT, DIAGONAL};
struct cellValue
{
int stringLenght;
arrow direction;
};
class LCS
{
public:
cellValue LcsLength (string, string);
};
当我尝试返回我的功能时,我有:
cellValue LCS::LcsLength (string X, string Y)
{
cellValue table[1024][1024];
return table;
}
答案 0 :(得分:8)
您的LcsLength
函数存在两个主要问题:您的返回类型错误,并且您有一个悬空指针。
您将LcsLength
声明为返回cellValue
个对象,然后尝试返回cellValue[1024][1024]
。这就是你得到编译器错误的原因。
无论返回类型如何,您正在执行的操作都不起作用,因为table
将在函数退出后立即销毁。使用std::vector
或std::map
会更好,具体取决于该表的用途。