#ifndef __TEST__
#define __TEST__
namespace std
{
template<typename T>
class list;
}
template<typename T>
void Pop(std::list<T> * l)
{
while(!l->empty())
l->pop();
}
#endif
Run Code Online (Sandbox Code Playgroud)
并在我的主要使用该功能.我收到错误.当然,我知道有更多的模板参数std::list(我认为是分配器).但是,这是不重要的.我是否必须知道模板类的完整模板声明才能转发声明它?
编辑:我之前没有使用指针 - 这是一个参考.我会用指针试一试.
如果使用a char*,我可以将其初始化为NULL,然后通过进行比较来检查它是否已设置.怎么做同样的事情std::string?如何检查字符串是否设置?
编辑:如果我设置的字符串也是空的怎么办?我是否必须使用额外的标志来检查是否std::string设置了?
感谢来自这里的人们的帮助,我能够获得塔斯马尼亚骆驼拼图工作的代码.然而,它非常慢(我想.我不确定,因为这是我在Python中的第一个程序).在代码底部运行的示例需要很长时间才能在我的机器中解决:
dumrat@dumrat:~/programming/python$ time python camels.py
[['F', 'F', 'F', 'G', 'B', 'B', 'B'], ['F', 'F', 'G', 'F', 'B', 'B', 'B'],
['F', 'F', 'B', 'F', 'G', 'B', 'B'], ['F', 'F', 'B', 'F', 'B', 'G', 'B'],
['F', 'F', 'B', 'G', 'B', 'F', 'B'], ['F', 'G', 'B', 'F', 'B', 'F', 'B'],
['G', 'F', 'B', 'F', 'B', 'F', 'B'], ['B', 'F', 'G', 'F', 'B', 'F', 'B'],
['B', 'F', 'B', 'F', 'G', 'F', 'B'], ['B', 'F', 'B', 'F', 'B', 'F', 'G'],
['B', 'F', 'B', 'F', 'B', …Run Code Online (Sandbox Code Playgroud) 我想得到我正在测试的元素的迭代器binary-search.但它只返回一个bool指示是否找到该值的指示.如何获得迭代器?
我的直觉是不是.我遇到以下情况:
class PluginLoader
{
public:
Builder* const p_Builder;
Logger* const p_Logger;
//Others
};
PluginLoader::PluginLoader(Builder* const pBuilder)
:p_Builder(pBuilder), p_Logger(pBuilder->GetLogger())
{
//Stuff
}
Run Code Online (Sandbox Code Playgroud)
或者我应该更改构造函数并Logger* const从构造的位置传递一个PluginLoader?
我以前从来没有为我的代码使用名称空间.(除了使用STL功能)
请考虑以下代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
template<class T>
bool IsNaN(T t)
{
return t != t;
}
int main(int argc, char**argv)
{
double d1, d2;
sscanf(argv[1], "%f", &d1);
sscanf(argv[2], "%f", &d2);
double dRes = d1/d2;
cout << "dRes = " << dRes << "\n";
if(IsNaN(dRes))
cout << "Is NaN\n";
else
cout << "Not NaN\n";
}
Run Code Online (Sandbox Code Playgroud)
几个问题:
dRes = inf.但我期待dRes = NaN或类似的东西.Floating exception.有什么不同?inf?剧透警报:也许是一个愚蠢的问题.:)
#include <iostream>
using namespace std;
class Base
{
public:
virtual void YourMethod(int) const = 0;
};
class Intermediate : private Base
{
public:
virtual void YourMethod(int i) const
{
cout << "Calling from Intermediate" << i << "\n";
}
};
class Derived : private Intermediate, public Base
{
public:
void YourMethod(int i) const
{
cout << "Calling from Derived : " << i << "\n";
}
};
int main()
{
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么会抛出编译器警告:
main.cpp:21: warning: direct …Run Code Online (Sandbox Code Playgroud) c++ ×9
g++ ×4
linux ×2
optimization ×2
algorithm ×1
constructor ×1
namespaces ×1
object-files ×1
performance ×1
python ×1
stl ×1
templates ×1