1

这是我第一次使用 C++。我在我的 Windows 机器上设置了 eclipse CDT 环境……我写了下面的代码,但不知何故,它给了我这样的 get_call 方法错误 -

'get_call' was not declared in this scope

下面是我的代码 -

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main() {

    vector<string> data;
    data.push_back("0");
    data.push_back("1");
    data.push_back("2");

    get_call("1234", data);

    return 0;
}

void get_call(string id, vector<string> data) {

    for(std::vector<T>::reverse_iterator it = data.rbegin(); it != data.rend(); ++it) {
        std::cout << *it;
    }
}

我在上面的代码中做错了什么吗?

我在 Windows 上使用 Eclipse CDT?

我的下一个问题是 - 一般来说,使用 C++ 的最佳方式是什么?我是否应该在 VMWARE Player 中使用 Ubuntu VM 来编译 c++ 项目,因为我发现很难让它在 eclipse CDT 中工作。

4

2 回答 2

0

将 get_call() 放在 main() 之前,或前向声明 get_call()。由于您在 Windows 上工作,visual studio(VC++ express 是免费的)很好,如果您想在没有 Linux 操作系统的 Linux 上运行代码,则可以使用 cygwin,当然在 VMWARE Player 中工作可以让您在几乎真实的 Linux 操作系统中编程.

于 2013-10-13T03:01:57.427 回答
0

您需要get_call在调用之前转发声明函数。在 C++ 中,符号在使用之前需要知道。

void get_call(string id, vector<string> data);  // forward declare get_call function

int main() {

    vector<string> data;
    data.push_back("0");
    data.push_back("1");
    data.push_back("2");

    get_call("1234", data);

    return 0;
}

// function definition
void get_call(string id, vector<string> data) {

    for(std::vector<string>::reverse_iterator it = data.rbegin();  // should be vector<strign>
        it != data.rend(); ++it) {
        std::cout << *it;
    }
}

你写std::vector<T>::reverse_iterator的编译器不知道是什么T,你应该使用vector<string>

于 2013-10-13T03:02:11.823 回答