小编Mar*_*lon的帖子

什么时候工厂合适?

取自维基百科:

在面向对象的计算机编程中,工厂是用于创建其他对象的对象.它是构造函数的抽象,可用于实现各种分配方案.

有人可以解释什么时候需要工厂级或有益吗?

我目前正在开发一个项目,我有一个类,并使用构造函数初始化一个对象(呃!),但它可能会失败,根本不会初始化.我有一个Success属性来检查它是否正确创建.这是一个应该实施工厂类的好例子吗?这样Create()方法可以返回null,我可以摆脱Success属性.我有正确的想法吗?

design-patterns factory-pattern

2
推荐指数
1
解决办法
252
查看次数

预编译头文件:是和不是?

我知道预编译的头被用于加快编译,但有什么做的和不该做哪些文件,我应该包括在其中?例如,我有一个项目,该项目使用了很多boost库,因此我只是将boost标头文件包含在其中stdafx.h(我正在使用VS2008)。我是否也应该在其中包含每个标准头文件?例如,即使我包含<vector>但从不使用,这会增加我的可执行文件的大小std::vector吗?在stdafx.h中包含我自己项目的头文件是一个坏主意吗?

c++ precompiled-headers

2
推荐指数
1
解决办法
1229
查看次数

数组下标运算符重载

我无法理解的区别Array obj;Array* obj = new Array;而超载数组索引运算符[].当我有一个指向该对象的指针时,我在VS 2010上收到这些错误消息.

错误C2679:二进制'=':没有找到一个类型'int'的右手操作数(或者没有可接受的转换)的
运算符可能是'Array&Array :: operator =(const Array&)',同时试图匹配参数列表'(Array,int)'

#include <iostream>
class Array
{
    int arr[10] ;

    public:
       int& operator[]( int index )
       {
           return arr[index] ;
       }
};

int main()
{
    //Array* obj = new Array; Error

    Array obj;   // Correct
    for( int i=0; i<10; ++i )
        obj[i] = i;

    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释运算符重载的两种实例之间的基本原理吗?谢谢.

c++ operator-overloading

2
推荐指数
1
解决办法
5878
查看次数

为什么我不能用c ++中的new调用参数化构造函数?

如果你知道这个问题,

假设我有一个其CTOR接收整数的A类;

我做不到以下事情:

A* arr = new A[3](A(2), A(3), A(5));
Run Code Online (Sandbox Code Playgroud)

或者任何其他方式来初始化数组的几个成员.我四处看看,这是不可能的.

我的问题是为什么,我为什么要这样做

A arr[3] = {A(1), A(2), A(3)};
Run Code Online (Sandbox Code Playgroud)

但我不能做到以上?记忆方面或其他什么.

非常感谢你!

c++ arrays dynamic-memory-allocation

2
推荐指数
1
解决办法
861
查看次数

C++代码问题

我对这段代码有些问题.我想显示... 12345 12345 12345

但我得到一个错误说...

错误1错误C3861:'displayOneRowOfDesign1':找不到标识符

有人可以帮忙吗?

// displays (on the screen) design1 
void displayDesign1 ()
{
  system ("cls"); // clears the screen

  // the entire for loop displays all three rows 
  for (int r = 1; r <= 3; r++)
  { // One iteration of the body of this loop displays row number r.
    // In other words, when r is 1, row 1 is displayed; 
    //                 when r is 2, row 2 is displayed; ...
    displayOneRowOfDesign1 ();
  } …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
104
查看次数

试图制作一个C++程序将4位八进制数转换为十进制数

这是我的代码,我试过谷歌搜索它,但我可以找到为什么我的代码没有正确转换数字.但它符合要求.你能告诉我为什么它不起作用以及我该怎么做才能解决它.

#include <iostream> 
using namespace std; 

int main() 
{ 
    char a = 0; 
    char b = 0; 
    char c = 0; 
    char d = 0;

    cout << "Enter 4 digit octal number "; 
    cin >> a >> b >> c >> d; 

    cout << "Decimal form of that number: " << (a * 512) + (b * 64) + (c * 8) + d << endl; 

    return 0; 

}
Run Code Online (Sandbox Code Playgroud)

c++

1
推荐指数
1
解决办法
689
查看次数

如何从同一解决方案中检查另一个项目的版本

我有一个C#解决方案,让我们说MySolution,在这里我有2个项目,让我们说ProjectAProjectB.ProjectA用作参考ProjectB.

如何获取ProjectB类内部的版本ProjectA

我可以使用以下语法获取ProjectB代码内部的版本ProjectB:

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version

.net c# reflection

1
推荐指数
1
解决办法
1126
查看次数

如何限制控制台输入的字符数?C#

基本上,我想在Console.ReadLine()中最多显示200个字符,以便在字符开始被抑制之前进行用户输入.我希望它像TextBox.MaxLength,除了控制台输入.我该怎么做?

我不想这样做 input.Substring(0, 200).

解决了:

我使用了自己的ReadLine函数,它是Console.ReadKey()的循环.

它看起来像这样,基本上:

StringBuilder sb = new StringBuilder();
bool loop = true;
while (loop)
{
    ConsoleKeyInfo keyInfo = Console.ReadKey(true); // won't show up in console
    switch (keyInfo.Key)
    {
         case ConsoleKey.Enter:
         {
              loop = false;
              break;
         }
         default:
         {
              if (sb.Length < 200)
              {
                  sb.Append(keyInfo.KeyChar);
                  Console.Write(keyInfo.KeyChar);
              }
              break;
         }
    }
}

return sb.ToString();
Run Code Online (Sandbox Code Playgroud)

感谢大家

c# user-input console-application

0
推荐指数
1
解决办法
5158
查看次数

如何从C#中的派生类中获取基类的名称

我想使用反射从派生类中获取基类的名称.

c#

0
推荐指数
1
解决办法
157
查看次数

BitConvert.IsLittleEndianon在不同的端架构上

BitConverter.IsLittleEndian的文档说:

指示数据存储在计算机体系结构中的字节顺序("endianness").

"这个"令我困惑.说我有以下代码:

Console.WriteLine(BitConverter.IsLittleEndian);
Run Code Online (Sandbox Code Playgroud)

现在说我去我的小端机器上编译我的程序.如果我将可执行文件粘贴到大端机器上,它会说错吗?还是真的?基本上我想知道该字段是否是动态字段,以及JIT是否与它有关.

c# bitconverter

0
推荐指数
1
解决办法
102
查看次数

如何检查字符串是否有两个带有连字符的单词?

我有以下代码:

var hyphens = myString.Split('-');
topTitle = hyphens[0].Replace("_", " ");
subTitle = hyphens[1].Replace("_", " ");
Run Code Online (Sandbox Code Playgroud)

这是有效的,但如果myString没有两个带有连字符的单词,我会收到错误.如何使myString只包含一个单词,那么topTitle获取该单词并且subTitle获得"n/a"?

c#

0
推荐指数
1
解决办法
1088
查看次数