c ++类声明错误?

时间:2010-09-02 15:27:05

标签: c++

伙计们我是c ++的新手 我正在尝试创建一个类,这些是我的文件

//main.cpp
#include <iostream>
#include "testing/test.h"
#include <string>
using namespace std;


int main(void)
{

 test c;
 c.set_url("e");

}

test.h

#ifndef TEST_H_
#define TEST_H_
#include<string>
class test {

  public:

    void testing(string url);


};

#endif /* TEST_H_ */



     //test.cpp

#include <iostream>
#include<string>
using namespace std;



void crawl::testing (string url) {
 cout<< "i am from test class";
}

我收到错误:'string'尚未声明错误

2 个答案:

答案 0 :(得分:5)

问题是您需要使用string的完全限定名称,因为未导入std命名空间

class test {
public:
  void testing(std::string url);
};

请避免使用testing.h文件中的std命名空间来解决此问题。这通常是不好的做法,因为它可以改变名称的解决方式。在头文件中限定名称更安全,虽然有点烦人。

答案 1 :(得分:1)

您获得的错误来自于未在头文件中使用命名空间std,即。 std::string并且在包含头文件(或标题)之前没有using namespace std;

命令using namespace std;假设某个类可能在此命名空间中,但它仅适用于命令后的所有用途。

如果你这样做了,它也会起作用,虽然一般来说这是不好的形式。

#include <string>
using namespace std;
#include "testing/test.h"

另外,不要忘记将test.h包含在test.cpp中。