Topcoder上有趣的编译错误

时间:2012-10-23 23:56:06

标签: c++ compiler-errors

此代码在Topcoder上给出了编译错误。在代码:: blocks上,它编译0错误和0警告,向量打印,但它以非零值退出,导致窗口显示“InterestingDigits.exe已停止工作”。对此有任何帮助..?

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

class InterestingDigits
{
public:
vector <int> digits(int base)
{
    vector<int> v;
    for(int i=2; i<base; i++)
        if(base%i==1)
            v.push_back(i);
    for(int i=0; i<v.size(); ++i)
        cout<<v[i]<<" ";
    cout<<endl;
}
};

int main()
{
    int base;
    cin>>base;
    InterestingDigits id;
    id.digits(base);
    return 0;
}

2 个答案:

答案 0 :(得分:2)

似乎你的方法digits()应该返回一个值,一个向量&lt; int&gt;。

也许添加“return v;”最后?

答案 1 :(得分:0)

您需要返回一个向量。使用您的代码,编译器会尝试返回导致未定义行为的内容。因此,添加“return v”可以解决您的问题。