没有打印;从理论上讲,我需要一个 main 还是应该在没有它的情况下工作?
Nothing prints; do I need a main or should it work without it, theoretically?
我不想问这个问题,但我已经尝试了 HOURS,但我无法弄明白。我是 C++ 的新手,无法弄清楚为什么 sprintf_s 不会在最后放出任何东西(或两者都放不出来)。基本上,Visual Studio 2019 年除了弹出 window 之外什么都没有发生。我知道这是一个简单的解决方案,但我会疯狂地想办法解决它。另外,我必须要有一个主电源还是没有它就可以工作?好吧,我的构造函数看起来还好吗?我在它下面有绿色的波浪形,但不确定如何修复它或者我是否可以忽略它。我感谢我能得到的所有帮助!谢谢!
//#include "stdafx.h" - commented out as I think this version of VS does
//this automatically (I looked under precompiled headers and it was listed as "Precompiled Header File"
//and it wouldn't work unless I commented it out
#include <iostream>
using namespace std;
// Base Entree class
class Entree
{
protected:
char _entree[10];
public:
const char* getEntree()
{
return _entree;
}
};
// Base Side class
class Side
{
protected:
char _side[10];
public:
char* getSide()
{
return _side;
}
};
class Drink
{
protected:
char _drink[10];
public:
Drink()
{
cout << "\n Fill cup with soda" << endl;
strcpy_s(_drink, "soda");
}
char* getDrink()
{
return _drink;
}
};
// ADDED CODE:
class ComboMeal
{
private:
Entree* entree;
Side* side;
Drink* drink;
char _bag[100];
public:
ComboMeal(const char* type)
{
sprintf_s(_bag, "/n %s meal combo: ", type);
}
void setEntree(Entree * e)
{
entree = e;
}
void setSide(Side * s)
{
side = s;
}
void setDrink(Drink * d)
{
drink = d;
}
const char* openMealBag()
{
sprintf_s(_bag, "%s, %s, %s, %s", _bag, entree->getEntree(), side->getSide(), drink->getDrink());
return _bag;
}
};
int main()
{
}
正如评论中所说,在 C++ 中,执行的代码是 main
函数中的代码。当对应 class 的对象被创建时构造函数被调用,所以你至少应该有这样的东西:
int main(){
ComboMeal combo("my type one");
return 0;
}
一个更完整的例子是:
int main(){
ComboMeal combo("my type one");
combo.setEntree(new Entree);
combo.setSide(new Side);
combo.setDrink(new Drink);
cout << combo.openMealBag() << endl;
return 0;
}
(当然这会打印出乱码,因为新对象中的值没有设置)
我不想问这个问题,但我已经尝试了 HOURS,但我无法弄明白。我是 C++ 的新手,无法弄清楚为什么 sprintf_s 不会在最后放出任何东西(或两者都放不出来)。基本上,Visual Studio 2019 年除了弹出 window 之外什么都没有发生。我知道这是一个简单的解决方案,但我会疯狂地想办法解决它。另外,我必须要有一个主电源还是没有它就可以工作?好吧,我的构造函数看起来还好吗?我在它下面有绿色的波浪形,但不确定如何修复它或者我是否可以忽略它。我感谢我能得到的所有帮助!谢谢!
//#include "stdafx.h" - commented out as I think this version of VS does
//this automatically (I looked under precompiled headers and it was listed as "Precompiled Header File"
//and it wouldn't work unless I commented it out
#include <iostream>
using namespace std;
// Base Entree class
class Entree
{
protected:
char _entree[10];
public:
const char* getEntree()
{
return _entree;
}
};
// Base Side class
class Side
{
protected:
char _side[10];
public:
char* getSide()
{
return _side;
}
};
class Drink
{
protected:
char _drink[10];
public:
Drink()
{
cout << "\n Fill cup with soda" << endl;
strcpy_s(_drink, "soda");
}
char* getDrink()
{
return _drink;
}
};
// ADDED CODE:
class ComboMeal
{
private:
Entree* entree;
Side* side;
Drink* drink;
char _bag[100];
public:
ComboMeal(const char* type)
{
sprintf_s(_bag, "/n %s meal combo: ", type);
}
void setEntree(Entree * e)
{
entree = e;
}
void setSide(Side * s)
{
side = s;
}
void setDrink(Drink * d)
{
drink = d;
}
const char* openMealBag()
{
sprintf_s(_bag, "%s, %s, %s, %s", _bag, entree->getEntree(), side->getSide(), drink->getDrink());
return _bag;
}
};
int main()
{
}
正如评论中所说,在 C++ 中,执行的代码是 main
函数中的代码。当对应 class 的对象被创建时构造函数被调用,所以你至少应该有这样的东西:
int main(){
ComboMeal combo("my type one");
return 0;
}
一个更完整的例子是:
int main(){
ComboMeal combo("my type one");
combo.setEntree(new Entree);
combo.setSide(new Side);
combo.setDrink(new Drink);
cout << combo.openMealBag() << endl;
return 0;
}
(当然这会打印出乱码,因为新对象中的值没有设置)