不同C ++类中的函数

时间:2016-08-04 17:12:36

标签: c++

所以,我已经开始了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功能中打印出构建,但我现在只是在试验。

3 个答案:

答案 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::添加到coutstring,并解释您的错误。

答案 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;
}