【发布时间】:2013-11-13 16:25:35
【问题描述】:
我是一个新手程序员。我有错误问题:数组下标的类型无效[int]'。我不明白为什么。
#include <iostream>
#include "D:\programyCodeBlocks\arytmetyka\include\CLiczba.h"
using namespace std;
int main()
{
CLiczba a;
CLiczba b;
CLiczba wynik;
a.vset("5");
b.vset("5");
cout << "calk: " << a.czescCalk[0] << endl;
cout << "ulam: " << a.czescUlam[2] << endl;
cout << "znak: " << a.znak << endl;
wynik = a.cdodaj(b);
return 0;
}
cout中出现问题
#ifndef CLICZBA_H
#define CLICZBA_H
#include <string>
#include <vector>
using namespace std;
class CLiczba
{
public:
CLiczba();
CLiczba(string liczba);
virtual ~CLiczba();
void vset(string liczba);
CLiczba cdodaj(CLiczba liczba);
CLiczba codejmij(CLiczba liczba);
vector<int> czescCalk();
vector<int> czescUlam();
bool znak;
int dlCalk;
int dlUlam;
protected:
private:
};
#endif // CLICZBA_H
和
#include "D:\programyCodeBlocks\arytmetyka\include\CLiczba.h"
using namespace std;
#include <iostream>
//#include <string>
CLiczba::CLiczba()
{
//dlCalk = 0;
//dlUlam = 0;
znak = true;
} // End CLiczba::CLiczba()
CLiczba::CLiczba(string liczba)
{
//dlCalk = 0;
//dlUlam = 0;
znak = true;
vset(liczba);
} //End CLiczba::CLiczba(string liczba)
void CLiczba::vset(string liczba)
{
int pom = 0;
if (liczba.at(0) == '-')
{
znak = false;
pom = 1;
} //End if (liczba.at(0) == '-'
int pozPrzecinek = liczba.find(',');
while(pom < pozPrzecinek)
{
czescCalk.push_back(liczba.at(pom) -48);
//dlCalk++;
pom++;
} //End while(pom < pozPrzecinek)
pom++;
while(pom < liczba.length())
{
czescUlam.push_back(liczba.at(pom) -48);
//dlUlam++;
pom++;
} //End while(pom < liczba.length())
} //End void CLiczba::vset(string liczba)
【问题讨论】:
-
能否请您翻译源代码的相关部分?
-
您确定要将
czescCalk用作方法吗?还是应该只是vector<int>成员? -
哦,对不起,我忘了。 Liczba - 数字 wynik - 结果 czescCalk - 总部分 czescUlam - 小数部分 znak - 符号
-
@user2948135 Stefano 的意思是用英语编写代码。所有的。不只是给我们一些翻译。它将帮助我们了解代码应该做什么,并且对您的职业生涯大有裨益(应该寻求追求)。但是从您的代码中,我假设您希望 czescCalk 成为一个向量,在这种情况下,它应该是
vector<int> czescCalk;而不是vector<int> czescCalk();,就像现在一样。 -
谢谢巴特。我认为 vector
czescCalk();是一个空的构造函数。现在可以了。