所以我有这段代码,为了方便,我希望它的构造函数的默认参数是 int 类型和 0。(我的项目类中有更多参数,其中一个是可选的,我不想要两次编写构造函数,因为它很大)
class mama{
public:
template<typename x> mama(x i=int(0)){}
};
int main(){
mama x;
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它说它找不到构造函数,所以还有另一种方法可以做到这一点吗?
error: no matching function for call to ‘mama::mama()'
note: candidates are: mama::mama(const mama&)
Run Code Online (Sandbox Code Playgroud) 一些代码:
foreach (System.Reflection.PropertyInfo pi in myObject.GetType().GetProperties())
{
if (pi.CanWrite)
{
object value = pi.GetValue(Properties, null);
// if (value is not default)
// {
X.addAttribute(pi.Name, value);
// }
}
}
Run Code Online (Sandbox Code Playgroud)
我想做的是,如果属性处于其 DefaultValue,则不调用“X.addAttribute...”行。我假设有某种方法可以获取属性的 DefaultValue,以便我可以进行比较?
出于我的目的,我试图获取由 DefaultValueAttribute 定义的“默认”值。
任何帮助表示赞赏,干杯。
如何在 c# 中为 datagridview 列单元格设置默认值,而有些列填充数据库值,有些列填充默认值,例如这样..
例如,从数据库值填充的第 1 列、第 2 列、第 3 列和其余列第 4 列单元格在上午 9 点填充,第 5 列在下午 6 点填充
private void dataGridView1_DefaultValuesNeeded(object sender,
DataGridViewRowEventArgs e)
{
// This is not working as I explain below
e.Row.Cells["in_time"].Value = "9 AM";
e.Row.Cells["Out_time"].Value = "6 PM";
}
Run Code Online (Sandbox Code Playgroud)
我使用此代码,但值位于行的末尾,列是 datagridview 的“In_Tim”列,并且在单击特定单元格之前,这些值是不可见的。
如何在所有列单元格中填充默认值?
如果您尝试在接口上创建内联函数,您将面临错误: 'inline' modifier is not allowed on virtual members. Only private or final members can be inlined
我知道这是因为该函数是虚拟的,因为它可以被覆盖。
如果我们能够声明“关闭”函数,这些函数就不会是虚拟的,因此能够被内联,这非常有用!
使用“private”为我们提供了一个非虚拟的、“封闭的”功能,但是世界其他地方无法使用它!
那么..有没有办法为抽象类型定义“封闭的”非虚拟内联函数?
(ps 我打算自己回答这个问题,但请随意分享您自己的答案!)
如何设置枚举类型提示的默认值,我尝试将其设置为 0 或 1,或者什么都不设置,但出现相同的错误?
enum tip {
pop,
rap,
rock
};
class Pesna{
private:
char *ime;
int vremetraenje;
tip tip1;
public:
//constructor
Pesna(char *i = "NULL", int min = 0, tip t){
ime = new char[strlen(i) + 1];
strcpy(ime, i);
vremetraenje = min;
tip1 = t;
}
};
Run Code Online (Sandbox Code Playgroud) 我有这个代码:
string myStr = "sdfs";
double myDouble = 3;
double.TryParse(myStr, out myDouble);
Run Code Online (Sandbox Code Playgroud)
因此解析将失败,并且我分配给“myDouble”的值也将更改为 0。
即使解析失败,有没有一种很好的方法来保持这 3 个默认值?没有像这样的 if 子句
if(!double.TryParse(myStr, out myDouble))
{
myDouble = 3;
}
Run Code Online (Sandbox Code Playgroud) 所以我需要了解哪种方式是正确/最好的方式?
class Customer
{
string firstName;
string lastName;
public Customer(string firstName="non", string lastName="applicable")
{
this.firstName = firstName;
this.lastName = lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
class Customer
{
string firstName;
string lastName;
public Customer()
: this("non","applicable")
{ }
public Customer(string firstName, string lastName)
{
this.firstName = firstName;
this.lastName = lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我正在创建一个方法 printFullName(),它在两种情况下都适用。那么选择哪一个呢?第一个对我来说似乎更容易。
当我安装组件时,我查看了对象检查器,其值为StoppingCount0!我需要值为-1。在我的代码中,任何高于 -1 的值都会在该数字处停止 for 循环过程。
default对负数不起作用?
unit myUnit;
interface
uses
System.SysUtils, System.Classes;
type
TmyComponent = class(TComponent)
private
{ Private declarations }
FStoppingCount: integer;
protected
{ Protected declarations }
procedure ProcessIT();
public
{ Public declarations }
published
{ Published declarations }
property StoppingCount: integer read FStoppingCount write FStoppingCount default -1;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('myComponent', [TmyComponent]);
end;
procedure TmyComponent.ProcessIT();
begin
for I := 0 to 1000 do
begin
DoSomething();
if FStoppingCount = I then break; …Run Code Online (Sandbox Code Playgroud) C++编译器在一定条件下为类添加了隐式默认构造函数、复制构造函数、析构函数、转换运算符、赋值运算符等以及其他隐式方法。
如何以最短的方式禁用/删除所有可能的隐式方法?
我不希望我的类不可复制,我只想禁用这些默认方法,以便编译器抛出编译错误,然后我自己实现它们。我只是想过度控制,这样编译器就不会对我的班级做任何无声的工作。
例如我可以做下一件事情(这只是一个虚拟示例,在现实生活中我可以有任何复杂的类):
class C {
private:
C() = delete;
C(C const & other) = delete;
C & operator = (C const & other) = delete;
};
Run Code Online (Sandbox Code Playgroud)
但这是很长的路要走,我也可以忘记删除一些方法签名,我需要删除所有方法。以便我自己从头开始重新实现所有方法。
而且我需要查看其他代码需要/使用且我尚未实现的所有方法的错误,而不是编译器为我默默地实现这些方法。
此外,如果我像上面的示例那样删除默认方法,我如何确定没有其他静默创建的方法?在线是否有 100% 由编译器静默创建的所有标准方法的列表?
default ×10
c# ×4
c++ ×3
constructor ×2
parameters ×2
.net ×1
class ×1
datagridview ×1
delphi ×1
enums ×1
function ×1
interface ×1
javascript ×1
kotlin ×1
methods ×1
numbers ×1
properties ×1
propertyinfo ×1
settings ×1
sql ×1
templates ×1
vue.js ×1
vuetify.js ×1