作为成员的指针函数错误
pointer as member functions errors
我正在尝试创建以下成员函数,但我得到了以下错误:
class ListStudentGradeDB
{
private:
public:
struct node
{
std::string studentName;
int studentScore;
node *next;
};
// line below is to create shortcut to node* nodePtr.
typedef struct node* nodePtr;
nodePtr head;
nodePtr curr;
nodePtr temp;
// Constructor
ListStudentGradeDB();
// member functions for merge sort
void MergeSort();
nodePtr msort(nodePtr start, int size);
nodePtr merge(nodePtr list1, nodePtr list2, int size1, int size2);
// Destructor
~ListStudentGradeDB(void);
};
//ListStudentGradeDB.cpp
nodePtr ListStudentGradeDB::msort(node* start, int size)
{
if(size > 1)
{
int midSize = size/2;
int count = midSize;
node* mid = start;
while(count)
{
mid = mid->next;
count--;
}
return merge(msort(start, midSize), msort(mid, size - midSize), midSize, size - midSize);
}
else
return start;
}
nodePtr ListStudentGradeDB::merge(nodePtr list1, nodePtr list2, int size1, int size2)
{
// Trivial cases
if(size1 == 0)
return list2;
if(size2 == 0)
return list1;
// Choose the bigger element from the front of the two lists
// and put it at the head of the new list and call merge
// again with the sub lists
if (list1->studentScore < list2->studentScore || list1->studentScore == list2->studentScore)
{
list1->next = merge(list1->next, list2, size1-1, size2);
return list1;
}
else
{
list2->next = merge(list1, list2->next, size1, size2-1);
return list2;
}
}
错误
>1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(534):错误>C2143:语法错误:缺少";"在"ListStudentGradeDB::msort"之前>1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(534):错误>C4430:缺少类型说明符-假定为int。注意:C++没有>支持默认的int 1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(535):错误>C4430:缺少类型说明符-假定为int。注意:C++没有>支持默认的int 1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(535):错误>C2556:"int ListStudentGradeDB::msort(ListStudentGradeDB:,node*,int)">:重载函数与的不同之处仅在于返回类型>'ListStudentGradeDB::nodePtr>ListStudentGradeDB::msort(ListStudentGradeDB::nodePtr,int)'1>>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.h(88):请参阅>"ListStudentGradeDB::msort"的声明>1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(535):错误>C2040:"ListStudentGradeDB::msort":"int(ListStudentGradeDB:节点>*,int)'在间接级别上与'ListStudentGradeDB::nodePtr(ListStudentGradeDB:;nodePtr,int)]不同>1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(546):错误>C2264:"ListStudentGradeDB::msort":函数定义或>申报;函数未调用1>c:\users\vypham\documents\visual>工作室>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(553):错误>C2143:语法错误:缺少";"在"ListStudentGradeDB::merge"之前>1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(553):错误>C4430:缺少类型说明符-假定为int。注意:C++没有>支持默认的int 1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(553):错误>C2086:"int nodePtr":重新定义1>>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(534):请参阅>"nodePtr"1>的声明c:\users\vypham\documents\visual studio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(554):错误>C4430:缺少类型说明符-假定为int。注意:C++没有>支持默认的int 1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(554):错误>C2556:'int>ListStudentGradeDB::merge>:重载函数与的不同之处仅在于返回类型>'ListStudentGradeDB::nodePtr>ListStudentGradeDB::merge>1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.h(89):请参阅>"ListStudentGradeDB::merge"的声明>1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(554):错误>C2040:"ListStudentGradeDB::merge":"int>(ListStudentGradeDB::nodePtr,ListStudentGradeDB::nodePtr,int,int)'>间接级别与'ListStudentGradeDB::nodePtr不同>(ListStudentGradeDB::nodePtr,ListStudentGradeDB::nodePtr,int,int)'>1>c:\users\vypham\documents\visualstudio>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(568):错误>C2264:"ListStudentGradeDB::merge":函数定义错误或>申报;函数未调用1>c:\users\vypham\documents\visual>工作室>2012\projects\cmpe_180\cmp180_final\liststudentgradedb.cpp(573):错误>C2264:'ListStudentGradeDB::merge'
我正在尝试为两个成员函数返回指针。有人能帮忙吗?
nodePtr具有类作用域,因此需要在ListStudentGradeDB.cpp中的定义中写入ListStudentGradeDB::nodePtr。
您的问题很可能在于函数的实现:
nodePtr ListStudentGradeDB::merge( ...
nodePtr
和merge
一样在ListStudentGradeDB
中定义。因此,您需要确保访问该范围如下:
ListStudentGradeDB::nodePtr ListStudentGradeDB::merge( ...
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误