LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 774|回复: 7

初学C++,一个问题,请指点,谢谢

[复制链接]
发表于 2004-8-15 22:41:58 | 显示全部楼层 |阅读模式
test.h:
#include<string>
#include<vector>

class Tel
{
public:
  string getName(void);
  string getNum(void);
  void setName(string);
  void setNum(string);
private:
  string name;
  string num;

};
void insert();
void show();


test.cpp: 这是个实现文件
#include<vector>
#include<string>
#include"test.h"
string Tel::getName()
{
  return name;
}

string Tel::getNum()
{
  return num;
}

void Tel::setName(string n)
{
  name = n;
}

void Tel::setNum(string n)
{
  num = n;
}



为什么我编译test.cpp始终通不过呢?
报错误如下:
root@/mydoc/c++>g++ test.cpp
In file included from test.cpp:3:
test.h:7: error: syntax error before `)' token
test.h:8: error: syntax error before `)' token
test.h:9: error: `string' was not declared in this scope
test.h:9: error: invalid data member initialization
test.h:9: error: (use `=' to initialize static data members)
test.h:9: error: variable or field `setName' declared void
test.h:10: error: `string' was not declared in this scope
test.h:10: error: invalid data member initialization
test.h:10: error: variable or field `setNum' declared void
test.h:12: error: 'string' is used as a type, but is not defined as a type.
test.h:13: error: 'string' is used as a type, but is not defined as a type.
test.cpp:4: error: syntax error before `::' token

请指点,顺便问下,假如我的 主文件为main.cpp,里面只需要引用test.h就能用实现文件里实现的功能了吧
发表于 2004-8-15 22:53:47 | 显示全部楼层
楼主是学JAVA的吧,这两者是语法上有不少差别,先拿本C++的入门教材好好看看。
 楼主| 发表于 2004-8-15 23:18:10 | 显示全部楼层
呵呵,老大说对了,我程序改了下,能否再帮我看看顶上的程序,这次真的不知道错在哪了。谢谢
发表于 2004-8-15 23:39:24 | 显示全部楼层
test.h

  1. #include<string>
  2. #include<vector>
  3. using namespace std;

  4. class Tel
  5. {
  6. public:
  7. string getName(void);
  8. string getNum(void);
  9. void setName(string);
  10. void setNum(string);
  11. private:
  12. string name;
  13. string num;

  14. };
复制代码


test.cpp

  1. #include<vector>
  2. #include<string>
  3. #include"test.h"

  4. string Tel::getName()
  5. {
  6. return name;
  7. }

  8. string Tel::getNum()
  9. {
  10. return num;
  11. }

  12. void Tel::setName(string n)
  13. {
  14. name = n;
  15. }

  16. void Tel::setNum(string n)
  17. {
  18. num = n;
  19. }
复制代码
 楼主| 发表于 2004-8-16 08:39:51 | 显示全部楼层
呵呵,今天在公司用dev-cpp试了下顶上昨天出错的代码,又是对的嘛。
发表于 2004-8-16 09:57:38 | 显示全部楼层
没有声明使用到namespace std啊,肯定会找不到string的定义的
就象没有import java.lang.* 就要用String一样的错误
 楼主| 发表于 2004-8-16 11:24:13 | 显示全部楼层
java中,没有import java.lang.* 一样用String
发表于 2004-8-16 11:52:54 | 显示全部楼层
java.lang里面的不用,那是因为已经默认会查找了,毕竟这个是核心包,每个java程序都要有的。你换别的,例如java.utils.*或者java.io.*里面的,不import就使用看看,编译不会通过的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表