C++ “不断获取错误”;不是类或命名空间;或;无法在没有对象的情况下调用成员函数;
我得到了这个错误,所以我得到了这个建议去尝试一些方法。。。我经历了一次巨大的失败。这是我的代码,我不知道我做错了什么,请解释并纠正我,我想学习,而不仅仅是解决问题:C++ “不断获取错误”;不是类或命名空间;或;无法在没有对象的情况下调用成员函数;,c++,class,methods,scope,void,C++,Class,Methods,Scope,Void,我得到了这个错误,所以我得到了这个建议去尝试一些方法。。。我经历了一次巨大的失败。这是我的代码,我不知道我做错了什么,请解释并纠正我,我想学习,而不仅仅是解决问题: #include <iostream> #include <string> #include <stdlib.h> #include <windows.h> using namespace std; class datum { public: int leto;
#include <iostream>
#include <string>
#include <stdlib.h>
#include <windows.h>
using namespace std;
class datum
{
public:
int leto;
int mesec;
int dan;
};
class racun
{
string naslov;
float cena; // Skupna cena na računu
int i; // Števec
public:
datum izdaje; //racuna
void nastavi_izracunaj_izpisi()
{
izdaje.dan = rand() % 30 + 1; //Dan
izdaje.mesec = rand() % 12 + 1; //Mesec
izdaje.leto = rand() % 30 + 1985; //Leto
i = rand() % 100; // Koliko računov smo imeli.
int produkti;
produkti = rand() % i + 200; //Koliko produktov smo imeli
int produkt1[200]; //cena prvega produkta
int produkt2[200]; //cena drugega produkta
int a; //števec produktov
a=0; //ki ga nastavimo na nič
do
{
produkt1[a] = rand() % 200;
produkt2[a] = rand() % 200;
a=a+1;
}while(a!=produkti);
int b; //kateri produkt bo izpisalo
b = rand() % 200;
cout<<"Kupili ste:"<<produkti<<" produktov"<<endl; //izpis za produkte
do
{
cena=produkt1[b]+produkt2[b];
i++;
}while(i!= produkti);
cout<<"Cena računa brez ddv je: "<<cena<<endl;
//DDV
float ddv = 1.12797374897;
float cena2;
float cenaddv;
cena2=cena/ddv;
cenaddv=cena+cena2;
cout<<"Cena računa z ddv je: "<<cenaddv<<endl;
}
};
int main()
{
racun nekaj;
nekaj::nastavi_izracunaj_izpisi(); //Nena dela, FAG
system("PAUSE");
return 0;
}
#包括
#包括
#包括
#包括
使用名称空间std;
类基准
{
公众:
内莱托;
int mesec;
int dan;
};
拉昆级
{
纳斯洛夫;
浮子塞纳;//Skupna塞纳纳拉胡努
int i;//Števec
公众:
datum izdaje;//拉库纳
void nastavi_izracunaj_izpisi()
{
izdaje.dan=rand()%30+1;//dan
izdaje.mesec=rand()%12+1;//mesec
izdaje.leto=rand()%30+1985;//leto
i=rand()%100;//Koliko računov smo imeli。
int produkti;
produkti=rand()%i+200;//Koliko produktov smo imeli
int produkt1[200];//cena prvega produkta
int produkt2[200];//cena drugega produkta
int a;//števec produktov
a=0;//ki ga nastavimo na nič
做
{
produkt1[a]=rand()%200;
produkt2[a]=rand()%200;
a=a+1;
}而(a!=produkti);
int b;//kateri produkt bo izpisalo
b=rand()%200;
库特
这是调用方法或访问成员的正确方法(正如@Ben Voigt所说)
nekaj::nastavi_izracunaj_izpisi()
应该是nekaj.nastavi_izracunaj_izpisi()
-您正在调用对象上的成员函数。::
用于静态成员函数,前缀是类名而不是对象名。现在我的程序崩溃了……为什么呢?:我不知道-我没有仔细研究过。如果你能学会如何发现它,而不是我来解决它,这会更有用告诉你——我建议你先在代码中加入std::cout
语句,直到你能准确地看到哪一行崩溃为止(因为前一行的输出显示了,但下一行没有显示)。如果你不能找出它为什么会在那里崩溃,请询问我们。或者,使用gdb或Visual Studio之类的交互式调试器。我现在正在查找我的代码崩溃的地方…如果我找到任何东西,我将在这里发布。哇,我发现了错误,不确定它发生的原因。它位于以下行:“int produkt1[200];//cena prvega produkta”“int produkt2[200];//cena drugega produkta“s/call a method/access a member/Euh…它编译了,但它破坏了你的控制台!?!是的,它编译了,然后当我运行它时,它破坏了我的控制台(程序),因为我使用的是控制台应用程序……这是因为:“int produkt1[200];//cena prvega produkta”,这一行有什么问题?不,不是这一行。我强烈建议您使用调试器,放置断点并逐行运行代码。如果您在linux发行版(或Windows)上的Windows、Eclipse或Netbeans上,请使用Visual studio express。请参阅我的编辑。
nekaj::nastavi_izracunaj_izpisi();
// should be
nekaj.nastavi_izracunaj_izpisi();
// Tehre an integer division by 0 on this line
produkti = rand() % i + 200;
// because this line always return 0
i = rand() % 100; // Koliko računov smo imeli.