如何调用这个C++类

jlchxyzl 2009-09-15 12:57:58
这是一个非常基本的问题,请知道的朋友指点一下:

我在String.h中声明了一个类class String,在String.cpp中实现了它。可当我在项目名为MyProject.cpp中调用这个类时,却无法正确调用这个类中的函数。错误提示是无法解析函数名。

我在头文件中也包含了“String.h”,在使用这个类之前也声明了它,难道还有哪个地方没有设置???要调用自己定义的一个类,是如何实现的?

...全文
124 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrlhrl0 2009-09-15
  • 打赏
  • 举报
回复
我刚好也是问这个
xinshou2595 2009-09-15
  • 打赏
  • 举报
回复


String(char *str);


inline String::String(char *str)
{
_size=strlen(str);
_string=str;
}
xinshou2595 2009-09-15
  • 打赏
  • 举报
回复

include "String.h"
include <iostream>
using namespace std;//命名空间写上
int main(void)
{
String s("the");
cout < < s.size();
return 0;
}

// String.cpp
#include "String.h"
#include <cstring>

inline String::String(const char *str) //构造函数参数不正确,改成一致
{
_size = strlen(str);
_string = str;
}

inline size_t String::size()
{
return _size;
}

inline char *String::c_str()
{
return _string;
}

inline ostream& operator < <(ostream &os, String &str)
{
return os < < str.c_str();
}

// String.h

class String;

ostream& operator < <(ostream&, String&);

class String
{
public:
String(char *str);
size_t size();
char *c_str();
private:
size_t _size;
char *_string;
};


文件应该在工程中
rickymathit 2009-09-15
  • 打赏
  • 举报
回复
String.cpp文件在工程中吗?没有需要加进来。另外你可以在主函数里面再调用一下别的成员函数试试是不是也提示无法解析,如果是这样就找该工程中是否有函数的实现体供调用了
jlchxyzl 2009-09-15
  • 打赏
  • 举报
回复
代码示意如下 :

// MyProject.cpp
include "String.h"
include <iostream>

int main(void)
{
String s("the");
cout << s.size();
return 0;
}

// String.cpp
#include "String.h"
#include <cstring>

inline String::String(const char *str)
{
_size = strlen(str);
_string = str;
}

inline size_t String::size()
{
return _size;
}

inline char *String::c_str()
{
return _string;
}

inline ostream& operator<<(ostream &os, String &str)
{
return os << str.c_str();
}

// String.h

class String;

ostream& operator<<(ostream&, String&);

class String
{
public:
String(char *str);
size_t size();
char *c_str();
private:
size_t _size;
char *_string;
};

代码应该没有什么问题,是书上的示例,关键是编译的时候,错误显示为无法解析某个函数名,我想这是不是没有正确的调用这个类的函数呢,还是其它方面的问题。

请指教,在线等待。
Lochan 2009-09-15
  • 打赏
  • 举报
回复
看代码..
这个跟文件名没什么关系的
dclchj 2009-09-15
  • 打赏
  • 举报
回复
不明白,楼主代码长吗,可不可以贴出来?
xiaocai0001 2009-09-15
  • 打赏
  • 举报
回复
string.h, string.cpp加到工程里一起进行编译.
bobo_2003 2009-09-15
  • 打赏
  • 举报
回复
自己写的类重名命下
mstlq 2009-09-15
  • 打赏
  • 举报
回复
这个……
换个文件名好吗?
c的库文件里面也有一个叫“string.h”
楼主将自己的改成“mstring.h”和“mstring.cpp”试试?

33,319

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧