我正在用C++为一个项目编写一个小而且不充分的线性代数库(对不起).我正在使用双精度数来实现矩阵和运算.我做得对吗?我应该实现模板类吗?周围有更精确的类型吗?
我试图在C++程序中节省一些内存,我想知道我是否可以使用块作为变量的范围(如Perl).假设我有一个巨大的对象执行一些计算并给出结果,这样做是否有意义:
InputType input;
ResultType result;
{
// Block of code
MyHugeObject mho;
result = mho.superHeavyProcessing();
}
/*
My other code ...
*/
Run Code Online (Sandbox Code Playgroud)
退出块时,我可以期望对象被销毁吗?
我正在编写一段处理数学变量和索引的代码,我需要在CLI上打印下标和上标,有没有(可能是跨平台的)方法呢?我在使用vanilla C++工作.
注意:我希望这是跨平台的,但是从第一个答案开始,这似乎不可能我在MacOS和Ubuntu Linux下工作(所以bash).
谢谢
正如标题所说:在Ubuntu下编程C++或Mono的首选IDE是什么?Eclipse是一种可行的方式吗?MonoDevelop是否足够成熟?其他IDE怎么样?
我正在将一个库从C++移植到C#.旧库使用来自C++的向量,在C#中我使用泛型字典,因为它们实际上是我正在做的一个很好的数据结构(每个元素都有一个ID,然后我只是使用TypeDictionary = Dictionary<String, Type>;).现在,在C#代码中,我使用像这样的循环
TypeDictionary.Enumerator tdEnum = MyTypeDictionary.GetEnumerator();
while( tdEnum.MoveNext() )
{
Type element = typeElement.Current.Value;
// More code here
}
Run Code Online (Sandbox Code Playgroud)
迭代集合的元素.问题是,在特殊情况下,我需要检查某个枚举器是否已到达集合的末尾,在C++中我会像这样检查:
if ( tdEnum == MyTypeDictionary.end() ) // More code here
Run Code Online (Sandbox Code Playgroud)
但我只是不知道如何在C#中处理这种情况,任何想法?
谢谢
Tommaso
如何检查变量,特别是指针是否在C++中定义?假设我有一个班级:
class MyClass {
public:
MyClass();
~MyClass() {
delete pointer; // if defined!
}
initializePointer() {
pointer = new OtherClass();
}
private:
OtherClass* pointer;
};
Run Code Online (Sandbox Code Playgroud) 假设我有一个带有几个子类(B,C和D)的A类.我需要BC和D才能从类E中访问一些受保护的成员.是否可以在一次点击中创建E的B,C和D朋友,而不必全部列出?
我尝试过:
class E {
friend class A;
...
};
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
谢谢
是否有人知道Perl的C++等效__DATA__片段?对于不熟悉Perl的人,该__DATA__段是一个(可选)注释,指向Perl文件的末尾; 任何后来被认为是(虚拟)文件的内容,Perl可以通过DATA文件句柄访问(读取,写入).我正在寻找类似于在C++程序中使用的东西(不要问,不要告诉).
谢谢
我有这个类模板
template <typename T>
class Wrapper
{
public:
virtual void parse(std::string s) = 0;
protected:
T value;
};
Run Code Online (Sandbox Code Playgroud)
理想情况下,每种类型都应该知道如何将自己从一个字符串解析,所以我想有,例如,特如
template<>
class Wrapper<int>
{
public:
virtual void parse(std::string s)
{
value = atoi(s.c_str());
}
};
Run Code Online (Sandbox Code Playgroud)
但是,显然,我无法从主模板访问"value"成员.我得到的是:
In member function 'virtual void Wrapper<int>::parse(std::string)':
error: 'value' is not a member of 'Wrapper<int>'
Run Code Online (Sandbox Code Playgroud)
this->在前面添加value没有帮助.
你知道如何解决这个问题吗?
谢谢
c++ inheritance templates member-functions template-specialization
c++ ×9
c# ×3
inheritance ×2
.net ×1
add ×1
class ×1
collections ×1
command-line ×1
containers ×1
data-segment ×1
friend ×1
linux ×1
mono ×1
object ×1
perl ×1
pointers ×1
porting ×1
reference ×1
scoping ×1
subscript ×1
superscript ×1
templates ×1
typography ×1