我想练习一些基本的c ++东西。我专注于继承只是为了试验它。一切顺利,直到我遇到一些奇怪的问题:' cout'在这方面没有申明。我已经查看了一些主题,但是大多数提示都是附加库或者使用命名空间std'但它并没有解决我的问题。
#include <iostream>
class podst
{
public:
float a;
float b;
float dodaw();
podst(float c,float d) : a(c), b(d)
{
}
};
float podst::dodaw()
{
return (a+b);
}
class poch : public podst
{
poch() : podst(5,4)
{
cout << a << endl << b << dodaw() << endl;
}
};
using namespace std;
int main()
{
podst podst(1,2);
cout << podst.dodaw() << endl;
poch poch2;
return 0;
}
答案 0 :(得分:2)
using namespace std低于你第一次使用cout。 尝试在poch类中使用std :: cout和std :: endl。
答案 1 :(得分:1)
poch
从全局命名空间调用cout
,而不是从std
命名空间调用using namespace std;
。请注意poch() : podst(5,4)
{
using namespace std;
cout << a << endl << b << dodaw() << endl;
}
指令实际上低于它,而不是上面。如果您不希望每次都写出整个名称空间前缀,那么最好根据每个函数放置该指令,而不是基于每个文件:
git clone --recursive https://github.com/dmlc/xgboost
cd xgboost
git submodule init
git submodule update
cd R-package
R CMD INSTALL .
这种方法有助于将大型代码库保持在一块。
答案 2 :(得分:0)
使用声明在您编写它时开始生效。由于cout
的呼叫高于该点,因此using
不会覆盖std::cout
,您必须在那里拼出using std::cout;
。
You should avoid using namespace std
。一个更好的选择是只提供你需要的东西,例如与cout
。但更好的选择是使用限定名称。打字要多一点,但它可以防止歧义;在我看到的每个代码库中,合格的名称都是无处不在的 - 至少在我看来 - 像if args.daemon:
pid = os.fork()
if pid > 0:
sys.exit(0)
os.close(0)
os.close(1)
os.close(2)
main()
def main():
# some code
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
这样的不合格的名字总是有点令人惊讶,并且在阅读代码时会略微惹恼我。
答案 3 :(得分:0)
因为poch是一个继承自父类所需的类 在文件的开头声明标准命名空间,使其对所有类和函数都是全局的,但是你在main之前声明它,所以poch类不能使用它,而是你可以显式地使用std :: cout和std :: endl和程序编译没有问题。
答案 4 :(得分:0)
export const getCurrentUserUid = createSelector(
getContestState,
state => state.currentUserUid
);
export const getMine = createSelector(
selectAll,
getCurrentUserUid,
(contests, currentUserUid) =>
contests.filter(contest => contest.owner === currentUserUid)
);
答案 5 :(得分:0)
如果要省略标准库命名空间caller :: std,则应编写
using namespace std;
之前(通常写在#include语句之后和int main()“
之前cout << ...
编译器按顺序读取代码。请注意,使用“使用”被认为是不好的做法。我建议习惯使用std :: namespace调用者:
std::cout << "Hello World!" << std::endl;
解决您的具体问题:
#include <iostream>
using namespace std;
class podst { ...