嵌入式技术
class shape { virtual Draw(); //... static int nLevel; }
BOOL CreateConf( const CString& strConfName, const BOOL bAudio = FALSE ); 在函数实现处的参数中不用添加默认值: BOOL CreateConf( const CString& strConfName, const BOOL bAudio/* = FALSE*/ ); { // ...... }
class Shape { // ... };
unresolved external symbol
错误。因为没有实现,所有没有供链接使用的 obj 文件。unresolved external symbol
错误,即链接不到该 C++ 类对应的接口。char* GetResult() { char chResult[100] = { 0 }; // ...... return chResult; }
class Shape() { // ... virtual void Draw(); // ... }
struct CodecInfo // 编码信息 { int nFrameRate; // ... } CodecInfo* pInfo = new CodecInfo; GetAudioCodecPtr()->GetCodecInfo(pInfo); // 调用AudioCodec::GetCodecInfo获取编码信息 AudioCodec::GetCodecInfo( CodecInfo* pInfo) // 此处的参数不应该使用单指针 { memcpy(pInfo, m_codecInfo, sizeof(CodecInfo)); } 上面中的
AudioCodec::GetCodecInfo
接口的参数不应该为单指针,应该用双指针,修改后的代码应该如下:AudioCodec::GetCodecInfo( CodecInfo** pInfo) // 此处的参数类型使用双指针 { memcpy(*pInfo, m_codecInfo, sizeof(CodecInfo)); }
class String{ public: String(); String(const String & str); String(const char* str); String& operator=(String str); char* c_str() const; ~String(); int size() const; private: char* data; }; 让写出上述几个函数的内部实现。这些函数的实现代码如下:
//普通构造函数 String::String(const char *str) { if (str == NULL) { m_data = new char[1];// 得分点:对空字符串自动申请存放结束标志''的,加分点:对m_data加NULL判断 *m_data = ''; } else { int length = strlen(str); m_data = new char[length + 1];// 若能加 NULL 判断则更好 strcpy(m_data, str); } } // String的析构函数 String::~String(void) { delete[] m_data; // 或delete m_data; } //拷贝构造函数 String::String(const String &other)// 得分点:输入参数为const型 { int length = strlen(other.m_data); m_data = new char[length + 1];// 若能加 NULL 判断则更好 strcpy(m_data, other.m_data); } //赋值函数 String & String::operator = (const String &other) // 得分点:输入参数为const型 { if (this == &other)//得分点:检查自赋值 return *this; if (m_data) delete[] m_data;//得分点:释放原有的内存资源 int length = strlen(other.m_data); m_data = new char[length + 1];//加分点:对m_data加NULL判断 strcpy(m_data, other.m_data); return *this;//得分点:返回本对象的引用 }
全部0条评论
快来发表一下你的评论吧 !