所以,我已经开始了C ++课程,但是当涉及到不同类的函数时,我遇到了一些问题。 我学会了通过以下方式创建函数:
string someFunction(){
return "blah";
}
然而,对于不同的类,它似乎是不同的。 我尝试过以下操作,但没有用:
(Startup.h)
#ifndef STARTUP_H
#define STARTUP_H
#include <string>
class Startup{
public:
Startup();
string getBuild();
};
#endif
(Startup.cpp)
#include "Startup.h"
#include <iostream>
#include <string>
using namespace std;
string build;
Startup::Startup(){
build = "1.0.0 Alpha";
getBuild();
}
string Startup::getBuild(){
cout << "The build is: " << build << endl;
}
(main.cpp中)
#include "Startup.h"
#include <iostream>
using namespace std;
int main(){
Startup startup;
return 0;
}
错误消息是:
C:\ Users \ someone \ Desktop \ C ++ \ Projects \ Stuff \ Startup.h | 8 | error:'string'没有命名类型|
另外,我知道我可以在Startup功能中打印出构建,但我现在只是在试验。
答案 0 :(得分:2)
string
类位于std
命名空间中。像这样使用它:
class Startup{
public:
Startup();
std::string getBuild();
};
答案 1 :(得分:0)
重写你的课程:
#ifndef STARTUP_H
#define STARTUP_H
#include <string>
class Startup{
public:
Startup();
std::string getBuild();
};
#endif
您的代码现在应该可以使用了。 getBuild
没有返回任何内容,因此在定义和声明中都给它一个void
的返回类型。将std::
添加到cout
和string
,并解释您的错误。
答案 2 :(得分:0)
在这里迟到,但你可能想要的是一些东西:
在.h
#ifndef STARTUP_H
#define STARTUP_H
#include <string>
class Startup{
public:
Startup();
std::string getBuild();
//^^^
private:
std::string buildName; // store the variable inside the class instead
};
#endif
在.cc
#include "Startup.h"
#include <iostream>
// no need to include <string>, it was included previously
using namespace std; // This makes it so you don't have to write `std::` infront of `string` and `cout`
Startup::Startup(){
build = "1.0.0 Alpha";
cout << "The build is: " << getBuild() << endl;
}
// Kind of unnecessary function
string Startup::getBuild(){
return buildName;
}