有.h文件和.cpp文件,名称相同但扩展名不同.
如果我想使用.cpp文件中的内容,是否要包含.h文件或.cpp文件?
我正在使用Ruby on Rails 3,我知道在哪种情况下使用模块是好的.
我有一个控制器,包括我以这种方式使用的许多私有方法:
class UsersController < ApplicationController
def update
params[:option1] = get_user_option1
params[:option2] = get_user_option2
if params[:option2]
params[:saving_success] = update_user
end
...
if params[:saving_success]
flash[:notice] = another_method_1
else
flash[:error] = another_method_2
end
end
private
def update_user
if params[:option1] == something
@user.save
end
end
def another_method_1
params[...] = ...
...
end
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,在私有方法中,我有ActiveRecords和params方法之类的东西.我知道在模块中你不能直接使用那些ActiveRecords或params方法,但你可以将它们作为参数传递,如下例所示:
# In the controller file
class UsersController < ApplicationController
include Users
def update
params[:option] = "true"
@users = Users.find(1) …Run Code Online (Sandbox Code Playgroud) 我是学C语言,并通过一些头文件在Linux目录被偷看/usr/include等stdio.h,stdlib.h等真正困扰着我的是我看到的所有功能与定义extern的关键字,这意味着它们只能被没有任何定义,例如声明:
extern FILE *fopen (__const char *__restrict __filename,
__const char *__restrict __modes) __wur;
Run Code Online (Sandbox Code Playgroud)
每个其他头文件中的每个其他函数也是如此.我的问题是,如果他们只被宣布在他们的实施的哪里?他们必须在某个地方实施吗?
根据维基百科(http://en.wikipedia.org/wiki/Buffer_overflow)
通常与缓冲区溢出相关的编程语言包括C和C++,它们不提供内置保护以防止访问或覆盖内存的任何部分中的数据,也不会自动检查写入数组的数据(内置缓冲区类型)是否在该数组的边界.边界检查可以防止缓冲区溢出.
那么,为什么'Bounds Checking'没有在C和C++等语言中实现呢?
我有高级语言的编程经验,并且几周前开始使用普通C编码(出于学术原因).我想实现类似于的数据结构map<char,myStruct*>.
如果这还不够清楚:我希望将每个可能的SINGLE"映射" char到指向我在其他地方定义的结构的指针上.如果有一种方法可以确保没有2 char秒可以指向相同的struct(char在将新元素插入地图时不检查其他内容)那将是整洁的,但这不是绝对必要的.我还需要能够从地图中删除配对,并重新插入具有相同键但不同指针的配对.
我已经想到了这一点,并认为我可以创建一个指针数组所有可能的字符长度,并只使用char作为数组索引存储相应的指针(因为它只是一个数字常量).这可能非常有用,但如果我最终在我的应用程序中只使用几个字符,那么为地址分配那么多空间似乎效率低下.
尽管如此,我还是没有想到任何替代解决方案(考虑到我是C新手,不是那么令人惊讶).我会很感激任何,甚至模糊的建议,朝着正确的方向前进.
我目前的操作系统课程项目是设计和实现一个基本的文件系统.我已经阅读了我们的书中有关文件系统的章节,但我迷失在哪里开始.我知道一些所需的结构(文件控制块,系统范围的打开文件表,每进程打开文件表,r + w缓冲区,目录结构),以及我需要支持的操作(打开,读取,写入,删除,创建,关闭).
我已经提供了10MB'驱动器'来实现内部的文件系统.任何有关资源或直接答案的帮助将不胜感激.
编辑:这是一个指向https://www.dropbox.com/s/971ec21u3yn62wz/Laboratory%20Project%204_5%20Creating%20a%20File%20System.pdf的链接
是否应该在无指针类中声明/实现破坏?拥有/不拥有它有什么好处吗?
我的男人是:
class Point
{
public:
int X, Y;
Point(int x, int y);
//~Point(void); //should I uncoment it and implement empty destructor ?
}
Run Code Online (Sandbox Code Playgroud) 当我在另一个类中使用它时,我如何确保我实现的某些颜色保持其价值?
struct.h
struct Color{
unsigned char r;
unsigned char g;
unsigned char b;
};
Color someColor;
//if i define the color here it says...:
Color someColor = {255,255,255}; //error: data member inializer not allowed
Run Code Online (Sandbox Code Playgroud)
struct.cpp
struct::Color someColor = {255,255,255};
Run Code Online (Sandbox Code Playgroud)
someotherclass.cpp
struct *str = new struct();
str->someColor.r //is not the correct value /not set
Run Code Online (Sandbox Code Playgroud) 我想在序言中实现以下谓词并将它们用于真值表:and / 2或or / 2,nand / 2,nor / 2,xor / 2
也许有人可以向我展示如何实现and / 2,例如,我可以自己做其他人并将其发布在这里。
我今天做了一个简单的测试:
struct C{virtual void f()=0;};
void C::f(){printf("weird\n");}
Run Code Online (Sandbox Code Playgroud)
该程序还可以,但是对我来说很奇怪,当我们使用=0它时,意味着应该在继承的类中定义函数体,但是看来我仍然可以给它实现函数。
我尝试了GCC和VC,都可以。因此在我看来,这应该是C ++标准的一部分。
但是,为什么这不是语法错误?
我想到的一个原因是C#同时具有'interface'和'abstract'关键字,interface无法实现,而abstract可能具有某些实现。
令我感到困惑的是,C ++应该支持这种奇怪的语法吗?