有没有办法在没有间接的头文件中声明这些类?
// Forwards declaration of B
class B;
class A
{
public:
// Default parameter referring to B. May return its parameter
const B& func(const B& b = B());
};
class B
{
public:
// B ctors
B() {}
B(const B&) {}
// B has A as a member
A a;
};
Run Code Online (Sandbox Code Playgroud)
Visual C++ 2008告诉我这个:
error C2514: 'B' : class has no constructors
Run Code Online (Sandbox Code Playgroud)
并指出B的前向声明("B类;"),显然不能在下面看到B的构造函数.A不能跟随B,因为B包含A作为成员.
如果必须使用间接,那么最好的方法是什么?也许在C++ 0x B中A可能是unique_ptr成员?或者也许有一个提升类纯粹是为了回避这个问题?
Haskell存储库中有大量独特的单词集合,(非常轻微的夸张).无论如何,今天的术语是孤立的原始.什么是隔离原语?它与非隔离原语相比如何?不幸的是,我没有足够的背景来了解Haskell的大部分说法,谷歌对此并没有多大帮助.
我熟悉的命名法将原语定义为没有超类型的类型,我从未在任何地方看到过isolate作为前缀.
我有两个类:A和B.类A的一些方法需要使用类B而相反(类B有需要使用类A的方法).
所以我有:
class A;
class B {
method1(A a) {
}
}
class A {
method1(B b) {
}
void foo() {
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常.
但是当我尝试从B :: method1调用类A的foo()时:
class B {
method1(A a) {
a.foo();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的结果是前向声明的编译错误和 不完整类型的使用.但为什么会这样呢?(我在使用之前已经宣布了A级?)
我想知道是否有一个Java的LIB与像实现:isTemperature()
,isPercentual()
,isDistanceUnit()
,isWeightUnit()
,isProperName()
,isDate()
,isYear()
,isPhone()
,isLocation()
,什么更可以定义.
不仅单位是我的兴趣,而且所有类型的分类都可以做,可以是数字或单词.
这将用于对文本中的单词进行分类.
现在,我并不是说我认为这可以接近正确的编码实践(假设它甚至可能); 这个问题源于凌晨2点的错误:假设类定义类似于以下内容:
class myClass
{
public:
void myMethod(const int & name);
}
Run Code Online (Sandbox Code Playgroud)
和定义:
void myClass::myMethod(const int & altName)
{
//manipulate altName
}
Run Code Online (Sandbox Code Playgroud)
请注意,声明和定义的参数都是const int&类型,唯一的区别是变量名称.我知道这不会(在Visual Studio 2012中)抛出编译器错误或警告,但是在运行程序时是否会导致错误?
谢谢!
浏览x86汇编语言参考手册时,我遇到了一个立即操作数的定义:
操作数可以是立即的(即,评估为内联值的常量表达式),[...]
如果我正确地得到它,表达式返回一个值.难道一个常量表达式,然后返回一个恒定值?内联值是否意味着在经历了汇编过程后它会被其他一些值替换?
我知道我必须在全局范围/命名空间中的类之外定义一个静态类成员,否则编译器会抱怨缺少符号.所以在下面我无法定义内部结构:
struct MyStruct
{
struct MyInnerStruct
{
int notimportant1, notimportant2;
};
static MyInnerStruct object1;
};
int main(void)
{
MyStruct foo;
foo.object1.notimportant1 = 5; // Unresolved external symbol, I expected this to happen
return 0;
}
MyInnerStruct MyStruct::object1; // Typical definition of a static member
// MyInnerStruct is underlined, saying it's undefined
Run Code Online (Sandbox Code Playgroud)
我也尝试了一个前面的声明,但它说了一些重新定义.其实我也想知道,这必须重新定义每一个
我正在经历这个问题:如何在python中返回类的定义?
但是我无法显示类定义.我收到以下错误:
>>> class A:
... pass
...
>>> import inspect
>>> source_text = inspect.getsource(A)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\**\Python\Python36\lib\inspect.py", line 968, in getsource
lines, lnum = getsourcelines(object)
File "C:\Users\**\Python\Python36\lib\inspect.py", line 955, in getsourcelines
lines, lnum = findsource(object)
File "C:\Users\**\Python\Python36\lib\inspect.py", line 768, in findsource
file = getsourcefile(object)
File "C:\Users\**\Python\Python36\lib\inspect.py", line 684, in getsourcefile
filename = getfile(object)
File "C:\Users\**\Python\Python36\lib\inspect.py", line 654, in getfile
raise TypeError('{!r} is a built-in class'.format(object))
TypeError: <module '__main__' …
Run Code Online (Sandbox Code Playgroud) 我试图定义预定义的功能,它给了我错误...下面的编程有什么问题.有人告诉我,我可以定义预定义的功能.我知道这不正确,但我仍在张贴......如果有人有......
#include <stdio.h>
#include <stdlib.h>
#define scanf "%s abc";
int main()
{
printf(scanf,scanf);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 变量/函数可以声明多次,但只能定义一次。这实际上是什么意思?
我试图了解有关在线编译器的声明,但我期望显示错误,但事实并非如此。
#include <stdio.h>
int x=10;
int main() {
x=20;
x=30;
printf("%d",x);
}
Run Code Online (Sandbox Code Playgroud)
预期的输出:因为我已经定义了变量x并分配了三个不同的值10、20、30,所以我希望显示错误。这个概念说您可以声明变量多次,但只能定义一次,因为不能将两个不同的位置赋给同一变量实际输出:30
definition ×10
c++ ×4
class ×3
declaration ×3
c ×2
assembly ×1
haskell ×1
header ×1
inline-code ×1
java ×1
primitive ×1
python ×1
static ×1
variables ×1