关于抽象容器类的问题!!!!
我在.NET编译环境中自己设计了一个类,中间使用了抽象容器类,但是老是编译不通过,代码如下,很简单,希望哪位大虾能指出其中的错误,本人将不胜感激!!!
头文件如下:
#pragma once
#include <vector>
class CMolar
{
public:
CMolar(void);
~CMolar(void);
protected:
//磨牙所在的近乎圆形的区域
CArray<CPoint,CPoint> m_EdgePoints;
//磨牙的牙根的数目
int m_nNumOfMolarFang;
public:
//设置磨牙所在的区域
void SetMolarArea(const vector<int> &EdgePoints);
//设置磨牙的牙根数目
inline void SetMolarNum(int nNumOfMolarFang)
{
m_nNumOfMolarFang = nNumOfMolarFang;
}
//取得牙根的牙根数目
inline int GetMolarNum()
{
return m_nNumOfMolarFang;
}
void GetMolarArea();
};
.CPP文件如下
#include "StdAfx.h"
#include ".\molar.h"
CMolar::CMolar(void)
{
}
CMolar::~CMolar(void)
{
}
void CMolar::SetMolarArea(const vector< CPoint > &EdgePoints )
{
//把所有外围点清楚干净
m_EdgePoints.RemoveAll();
for(int i = 0; i < EdgePoints.size(); i++)
{
m_EdgePoints.Add(EdgePoints[i]);
}
}
vector< CPoint > CMolar::GetMolarArea()
{
vector< int > edgePoints;
for(int i = 0; i < m_EdgePoints.GetSize(); i++)
{
EdgePoints.push_back(EdgePoints[i]);
}
return EdgePoints;
}
编译错误如下:
(1)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(29): error C2039: 'GetMolarArea' : is not a member of 'CMolar'
(2)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(21): error C2065: 'EdgePoints' : undeclared identifier
(3)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.h(18): error C2143: syntax error : missing ',' before '<'
(4)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(16): error C2143: syntax error : missing ',' before '<'
(5)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(30): error C2143: syntax error : missing ';' before '{'
(6)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.h(32): error C2143: syntax error : missing ';' before '<'
(7)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(29): error C2143: syntax error : missing ';' before '<'
(8)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(21): error C2228: left of '.size' must have class/struct/union type
(9)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.h(32): error C2238: unexpected token(s) preceding ';'
(10)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(30): error C2447: '{' : missing function header (old-style formal list?)
(11)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.h(32): error C2501: 'CMolar::vector' : missing storage-class or type specifiers
(12)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(29): error C2501: 'vector' : missing storage-class or type specifiers
(13)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(23): error C3861: 'EdgePoints': identifier not found, even with argument-dependent lookup
不知道问题出在哪里,希望高手予以指教!!!
问题点数:20、回复次数:6Top
1 楼jp1984(mathfrog)回复于 2004-09-03 19:40:49 得分 8
没看完。 。但是 要加上
using namespace std;Top
2 楼zhangfeigreat(大鹏)回复于 2004-09-03 19:56:44 得分 0
在哪里加呢?
我不太清楚!!
我看了以下 C++Primer里面也没有说要加using namespace std
请指教!!!Top
3 楼ntxs(别人加薪我加班,数钱数到心发酸T_T)回复于 2004-09-04 03:52:40 得分 8
那就证明你看书不用心 很多地方它不加是因为他老早就说过了必须得加所以偷懒
#pragma once
#include <vector>
using namespace std;Top
4 楼zhangfeigreat(大鹏)回复于 2004-09-04 10:32:01 得分 0
这个问题我已经解决了,谢谢你了哈!!!
对了,再问你一个问题啊!
我又在这个类里面加了一个函数,其函数体如下:
BOOL AreaSelfDevelop(CPoint SeedPoint)
{
CRgn MolarRgn;
int nNumofPoints = m_EdgePoints.GetSize();
LPPOINT lpMolarPoints = new CPoint[MAXMOLAREDGEPOINTS];
MolarRgn.CreatePolygonRgn(lpMolarPoints,nNumofPoints,ALTERNATE);
return TRUE;
}
但是老是出现编译错误,错误如下:
(1)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(48): error C2065: 'm_EdgePoints' : undeclared identifier
(2)d:\Program Files\Microsoft Visual Studio\MyTestImage1\Molar.cpp(48): error C2228: left of '.GetSize' must have class/struct/union type
m_EdgePoints这个成员变量我已经在类里面声明了啊,为什么会出现第一个错误呢?
请大虾予以指教!!谢谢!!!Top
5 楼ntxs(别人加薪我加班,数钱数到心发酸T_T)回复于 2004-09-04 15:35:58 得分 4
'm_EdgePoints' 是protected 只能在函数成员中被调用
BOOL CMolar :: AreaSelfDevelop(CPoint SeedPoint)
Top
6 楼zhangfeigreat(大鹏)回复于 2004-09-04 18:51:02 得分 0
谢谢了哈.
我真是太粗心了,连这都给忘了
以后要注意了啊,对了怎么把分数给你啊
!!!Top




